Installing node.js and jasmine-node
There seem to be a plethora of ways to install node.js, and none of them worked initially for me. Even when I got node itself working, npm (node's creatively named package manager) would refuse to install. Or if I got it installed, it would then refuse to install jasmine-node. So here's what I did to finally get it all working:
Install node.js
At the time I wrote this post, the development version of node was failing to build. So, rather than installing the latest version from git, I had to install from the last stable version:
wget http://nodejs.org/dist/v0.6.5/node-v0.6.5.tar.gztar \
-xvf node-v0.6.5.tar.gz./configure \
--prefix=~/localmake install
This will install node into ~/local, and conveniently also installs npm. Finally, add this line to your .bashrc so bash can find node:
export PATH=$HOME/local/bin:$PATH
Install jasmine-node
By default, npm will simply install packages to your pwd. I prefer this option over doing a system wide install, since I can have a per-project environment (somewhat like python's virtualenv). You can install jasmine-node into the project directory like so:
makdir test_project && cd test_projectnpm install jasmine-node
Write a simple test
You're now ready to start writing test specs. Jasmine expects your tests to reside in test_project/spec/ and be named whatever.spec.js. So save the following as test_project/spec/test_hello.spec.js
var hello = require('../hello');
describe('hello_world', function() {
it('should return hello world', function() {
var returned_string = hello.hello_world();
expect(returned_string).toEqual("Hello, world!");
});
});
You'll need something to test, too, so save the following in test_project parent directory:
function hello_world() {return "Hello, world!";}
exports.hello_world = hello_world;
Finally, you can run jasmine-node and see the test pass. From inside test_project, run the following command:
./node_modules/jasmine-node/bin/jasmine-node spec/
you should see the following output:
Started
.
Finished in 0.002 seconds
1 test, 1 assertion, 0 failures
Bam! Up and running with node.js and jasmine-node.