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 --coffee
?!
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.
Enjoy!