9

Have been trying a simple async test. Installed jasmine-node npm install -g jasmine-node then wrote a simple module and test.

Simple module.

// weather.js
exports.get = function(city, callback) {
    callback(city);
};

and a test suite.

// weather-spec.js
var list = require("../modules/weather");

describe("Weather Forecast", function(data) {
    it('should get weather for London,UK', function() {
        list.get('London,UK', function(data) {
            expect(data).toEqual('London,UK');
            done();
        });
    });
});

I get the error:

Stacktrace:
    ReferenceError: done is not defined

Given the simple example I can't see where I am going wrong. Can anyone help?

Mark Tyers
  • 2,961
  • 4
  • 29
  • 52

2 Answers2

36

done is the first argument passed to it:

it('should get weather for London,UK', function(done) {
    list.get('London,UK', function(data) {
        expect(data).toEqual('London,UK');
        done();
    });
});
jgillich
  • 71,459
  • 6
  • 57
  • 85
1
describe("Weather Forecast", function(data) {
    it('should get weather for London,UK', function(done) {
        list.get('London,UK', function(data) {
            expect(data).toEqual('London,UK');
            done();
        });
    });
});

Make sure you pass in done in it's callback.

Calvin Cheng
  • 35,640
  • 39
  • 116
  • 167