我正在使用Node.js(BDD中的noob)。在我的控制器中,我有这样的功能:
var getUser = function(username, done) {
console.log('prints');
User.findOne({
'local.username': username
}, function (err, user) {
console.log('doesn"t print');
if (err) {
return done('Oops, server error!', null);
} else {
return done(null, user);
}
});
};
我正在使用Mocha并描述了一个类似的测试块:
describe('can be created only using a web interface', function () {
describe('The user name should:', function () {
it("be a valid email", function () {
assert(common.isValidEmail(fakeuser.local.username));
});
it("not already exist in the database", function () {
userController.getUser(fakeuser.local.username, function (err, user) {
log.info('The user name is', user);
//I would like to assert here. But user is always undefined.
}());
});
});
});
似乎User.findOne没有像我期望的那样工作,因为测试通过无论什么,内部的代码甚至没有被执行。我错过了什么?
注意:在代码的其他部分调用相同的函数就可以了。
可在此处访问该项目:https://github.com/attosol/nodeseed
文档(和项目)远未完成。只需执行npm安装,然后启动npm,然后启动MongoDB(它将使用DB-nodeseed)。只需使用任何有效的电子邮件注册,并在日志文件中找到激活URL。
答案 0 :(得分:0)
你必须写一些东西来与
进行比较it("not already exist in the database", function(done){
var wasCalled = false;
userController.getUser('my@email.com', function(err, user){
console.log('doesn"t print');
wasCalled = true;
});
expect(wasCalled).toBe(true);
});