Unit testing the jQuery Rambling Slider - CoffeeScript, Jasmine and node.js
November 9, 2011
This post was originally published in the Rambling Labs Blog on November 9, 2011.
As you may know, I have been working lately on the jQuery Rambling Slider. One of my personal milestones with this project is to write as many unit tests as possible, so I began my research.
Honestly, I didn’t know where to begin. I remember to have read once on twitter that someone was writing their tests with Jasmine and CoffeeScript, so that could be a good starting point (and it sounds really fun too!). I have worked with Jasmine before and it sure was a great experience. It’s yet another productivity tool made by the great Pivotal Labs guys.
After googling for a while, I stumbled into a post from someone that was writing tests in Jasmine and node.js. This is really awesome. Being able to run the Jasmine tests without firing up a browser, beautiful. In order to achieve this, you have to install
jasmine-node through the node package manager like this:
npm install -g jasmine-node
Now, let’s say you have a file
src/array_extensions.coffee that looks like this:
Array::contains = (value) -> length = @length for i in [0...length] return true if value is @[i] false
So you write this test in
spec/array_extensions.spec.coffee, which shows how extremely beatiful is to write Jasmine tests on CoffeeScript:
require '../src/array_extensions' describe 'Array Extensions', -> describe 'when verifying if an array contains an element', -> array = null beforeEach -> array = [1...5] it 'should return true for a contained element', -> expect(array.contains(1)).toBeTruthy() it 'should return false for a non contained element', -> expect(array.contains(5)).toBeFalsy()
To run the tests just type:
jasmine-node --coffee spec/
Did you notice the sweet
So that’s where I began, writing tests for the simpler stuff first. I’ve just added a few tests, but I expect to bring that to 100% test coverage soon.