我有一个简单的测试,用于调用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();
});
});
});
});
答案 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) ->