我想编写异步函数的测试。
// Function declaration
someLongAsyncTasks(cb) {
// This function doing some long tasks like fs.copy(...)
// I will use setTimeout to simulate these jobs
setTimeout(function() {
cb();
}, 3000);
}
// in tests.js file
it('...', function(done) {
someLongAsyncTasks(function(err) {
if (err) done(err);
else done();
});
});
如您所见,我已将done
传递给it()
的回调函数,因此应等到someLongAsyncTasks()
完成其工作。但是我仍然遇到这个错误:
Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
我失踪了什么?为什么it()
没有等待我的异步函数和触发超时错误?
答案 0 :(得分:0)
好的我会回答我自己的问题。我解决了这个问题。在真正的someLongAsyncTasks()
函数中有许多不同的情况,其中一个案例函数没有调用回调函数。
很快,
检查你的someLongAsyncTasks()函数是否在每种情况下调用你的回调函数。