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 发送超时的原因
我正在尝试用 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 发送超时的原因