1
我与摩卡的工作,我试图测试,我在建设过程中的API。如何确保嵌套的异步代码可以使用Mocha正确测试?
我无法理解在哪里放置done()
功能。
如果我把它放在哪里,现在,它不执行的User.findOne()
回调函数。
如果我的地方在User.findOne()
回调函数的底部做了,那么它会创建一个超时。
我是比较新的异步和该做的功能,所以有人可以帮助解释为什么这两种情况发生,以及如何解决的代码,以便它会在摩卡正确测试?
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();
}
}
);
});
});
谢谢,我发现我没有连接到我的数据库(我傻!)这就是为什么它被超时。它应该进入findOne! – ArKi 2012-08-07 16:16:05