我开始使用NodeJS进行mocha测试框架。成功断言工作正常,但如果断言失败,我的测试超时。为了断言,我已经尝试过,应该和期待。例如(异步代码)
it('should create new user', function(done){
userService.create(user).then(function(model){
expect(model.id).to.be(1); //created user ID
done();
}, done)
});
这里if模型id不是1然后测试超时而不是报告失败的断言。我确定我做错了什么。感谢您的帮助。谢谢!
答案 0 :(得分:18)
Shawn的回答有效,但有一种更简单的方法。
如果您从测试中返回Promise,Mocha将为您处理所有事情:
it('should create new user', function() {
return userService.create(user).then(function(model){
expect(model.id).to.be(1); //created user ID
});
});
不需要done
回调!
答案 1 :(得分:17)
期望抛出一个由承诺捕获的错误。添加调用done的catch条件会修复此问题。
it('should create new user', function(done) {
userService.create(user).then(function(model) {
expect(model.id).to.be(1); //created user ID
done();
}).catch(function(e) {
done(e);
})
});
答案 2 :(得分:0)
看起来永远不会调用done
。除了then
,您可能还需要else
来处理失败。