Node.js Mocha断言失败,导致超时

Node.js Mocha断言失败,导致超时,node.js,mocha.js,Node.js,Mocha.js,我正在使用NodeJS开始使用mocha测试框架。成功断言工作正常,但如果断言失败,我的测试将超时。因为我认为我已经尝试过应该和期待。例如(异步代码) 这里,如果模型id不是1,则测试超时,而不是报告失败的断言。我肯定我做错了什么。谢谢你的帮助。谢谢 看起来好像从未调用过done。除了then,您可能还需要else来处理失败。expect正在抛出一个被承诺捕获的错误。添加调用done的catch条件可以修复此问题 it('should create new user', function(don

我正在使用NodeJS开始使用mocha测试框架。成功断言工作正常,但如果断言失败,我的测试将超时。因为我认为我已经尝试过应该和期待。例如(异步代码)


这里,如果模型id不是1,则测试超时,而不是报告失败的断言。我肯定我做错了什么。谢谢你的帮助。谢谢

看起来好像从未调用过
done
。除了
then
,您可能还需要
else
来处理失败。

expect正在抛出一个被承诺捕获的错误。添加调用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);
    })
});

肖恩的答案可行,但有一个更简单的方法

如果您从测试中兑现承诺,摩卡将为您处理一切:

it('should create new user',function(){
返回userService.create(user).then(函数(模型){
expect(model.id).to.be(1);//创建的用户id
});
});

没有
完成
需要回调

看起来当前的实现是这样的。在摩卡1.18中承诺支持,即在第一次提出这个问题之后。太好了!我将接受肖恩的回答,正如丹维克所指出的:)谢谢。这是最好的解决方案。如果您使用摩卡1.18或更高版本,danvk下面的答案会更好。我自己几乎没能看到这个答案,所以我在这里发表评论是为了提高可见度。
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);
    })
});