Mocha 异步测试超时的解决方法

Workaround for Mocha async test timeouts

我正在尝试用 mocha 和 chai 编写单元测试,但是我 运行 遇到了一个问题,我遇到了超时错误,而不是抛出实际错误,但我不能似乎找到了解决方法。

我得到的错误:

  1) Unit Tests for Networks Array
 should check that networks array is not empty:
     Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.

在我的代码中,我已经做到与我正在测试的相反,所以我有一个预期的失败。

是否有解决此类问题的标准方法?

describe('Unit Tests for Networks Array\n', function () {

    it('should check that networks array is not empty', function (done) {
        git.getNetworks(function (networks) {
            expect(networks).to.be.empty();  // expected failure
            done();
        });
    });

Promises 以这种方式工作,您可以拒绝或解决它。但是,如果您的 promise 逻辑中存在错误并且您没有发现错误,因为它 被吞噬了 并且默默地死去并且永远不会出现。

git.getNetworks.then(function() { 
/* do something with the result */
}).catch(function() {
 /* error :( */
})

确保 你覆盖了拒绝回调(可选)和捕获(总是),否则 Promise 静默抛出和错误,这就是 Mocha 发送超时的原因