我正在使用 Mocha 并正在尝试测试我正在构建的 API。
我无法理解该done()
函数的放置位置。
如果我把它放在现在的位置,它不会执行User.findOne()
.
如果我将 done 放在回调函数的底部User.findOne()
,那么它会创建一个超时。
我对 async 和这个 done 功能相对较新,所以有人可以帮助解释为什么会发生这两种情况,以及如何修复代码以便在 Mocha 中正确测试?
describe('POST /signup', function() {
before(checkServerIsRunning); // Need to implement
it('create a new user if username is unique', function(done) {
httpReq({
method : 'POST',
url : url + '/signup',
json : true,
body : JSON.stringify({
username : 'test',
first : 'first',
last : 'last' })
},
function (err, res, body) {
if (err) {
done(err);
}
else {
res.statusCode.should.be.equal(201);
User.findOne( { username: 'test' }, function(err, user) {
user.should.have.property('username', 'testy');
user.should.have.property('firstName', 'first');
user.should.have.property('lastName', 'last');
usersToRemove.push(user);
});
done();
}
}
);
});
});