茉莉花测试失败

时间:2013-07-15 02:08:53

标签: node.js express jasmine

我有一个简单的测试,用于调用POST请求测试的回调。从服务器日志中可以看出正在发出请求,但它似乎就此止步了。

我很擅长使用节点进行工作/测试,所以很有可能我错过了一些简单的东西。

更新:我添加了原始coffeescript

更新:如果文件直接运行jasmine-node foo/bar/users.spec.coffee --coffee,则运行原始coffeescript,但在运行所有咖啡文件jasmine-node foo/bar --coffee时失败。我将.coffee文件转换为.js(并保留在所有返回中)并看到完全相同的问题(如果我单独运行文件则运行回调,但是当我运行它们时失败)

# original coffeescript
assert  = require 'assert'
request = require 'request'

describe 'User API', ->

  describe 'Signup', ->

    url = 'http://localhost:3000/users'
    params = null

    beforeEach (done) ->
      params =
        url: url
        form:
          firstName:  'John'
          lastName:   'Smith'
          email:      'john@example.com'
          password:   'foobar'
          role:       'member'
      done()

    it 'returns a 200 OK on valid user signup', ->
      request.post params, (err, resp, body) ->
        console.log "***************"
        console.log "in the callback"
        console.log "***************"
        assert.equal resp.statusCode, '200'
        done()


// the converted js
var assert, request;

assert = require('assert');

request = require('request');

describe('User API', function() {
  return describe('Signup', function() {
    var params, url;
    url = 'http://localhost:3000/users';
    params = null;
    beforeEach(function(done) {
      params = {
        url: url,
        form: {
          firstName: 'John',
          lastName: 'Smith',
          email: 'john@example.com',
          password: 'foobar',
          role: 'member'
        }
      };
      return done();
    });
    return it('returns a 200 OK on valid user signup', function() {
      return request.post(params, function(err, resp, body) {
        console.log("***************");
        console.log("in the callback");
        console.log("***************");
        assert.equal(resp.statusCode, '200');
        return done();
      });
    });
  });
});

2 个答案:

答案 0 :(得分:0)

那里有两个return语句。您的函数在执行第一个函数后返回,因此后面的代码将不会运行。

你可以摆脱它们:

var request = require('request');

describe('User API', function() {
    describe('Signup', function() {
        var url = 'http://localhost:3000/users';
        var params = null;

        beforeEach(function() {
            params = {
                url: url,
                form: {
                    firstName: 'John',
                    lastName: 'Smith',
                    email: 'john@example.com',
                    password: 'foobar',
                    role: 'member'
                }
            };
        });

        it('returns a 200 OK on valid user signup', function() {
            return request.post(params, function(err, resp, body) {
                expect(resp.statusCode).toEqual(200);
            });
        });
    });
});

答案 1 :(得分:0)

我错过了传入测试的done参数。

# bad
it 'returns a 200 OK on valid user signup', ->

# good
it 'returns a 200 OK on valid user signup', (done) ->