Frisby.js, Test the REST

Frisby is a testing framework for testing a REST api. It has built in matchers and Jasmine built into its core. This allows you to have a clean and concise way to implement and run your tests.

Getting Started.

As with any framework or testing tool that you may use a little setup is required. If you haven’t already install NodeJS on your system. Once that is installed you can create a basic npm project and install some packages.

$ npm install --save-dev frisby jasmine-node
$ mkdir specs

On the Frisby.js webpage it says to install jasmine-node like. “npm install -g jasmine-node” The -g means global. This would allow you to run jasmine-node from anywhere. I prefer to put it in the save-dev so that all of the packages are contained within the node_modules folder within the project.

Since we installed jasmine-node using the –save-dev flag we should update the test task on the package json. This will allow for a clean way to run the tests.

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "./node_modules/.bin/jasmine-node specs"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "frisby": "^0.8.5",
    "jasmine-node": "^1.14.5"
  }
}

You can now run your specs using npm test.

$ npm test
> [email protected] test /home/ben/exp/test
> jasmine-node specs

Finished in 0.001 seconds
0 tests, 0 assertions, 0 failures, 0 skipped

Once you have a basic running test suite its time to write our first spec.

All spec files must end in “spec.js” like “test_spec.js” or “yourTestspec.js”

Your first spec

var frisby = require('frisby');
frisby.create('Get Brightbit Twitter feed')
  .get('http://www.testcookbook.com/lib/REST/test.json')
  .expectStatus(200)
.toss();

Now try running your tests with “npm test”

$ npm test

> [email protected] test /home/ben/exp/test
> jasmine-node specs

.

Finished in 0.452 seconds
1 test, 1 assertion, 0 failures, 0 skipped