15

我开始使用 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)
  });

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

4

3 回答 3

18

肖恩的回答有效,但有一种更简单的方法。

如果您从测试中返回 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回调!

于 2015-04-23T17:59:10.940 回答
17

expect 抛出了一个被 promise 捕获的错误。添加一个调用 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);
    })
});
于 2014-05-17T14:18:32.523 回答
0

看起来done从来没有被调用过。此外then,您可能还需要else处理故障。

于 2013-08-15T03:20:48.863 回答