MochaJS不等待异步功能

时间:2017-05-22 17:12:27

标签: node.js testing asynchronous mocha

我想编写异步函数的测试。

// 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()没有等待我的异步函数和触发超时错误?

1 个答案:

答案 0 :(得分:0)

好的我会回答我自己的问题。我解决了这个问题。在真正的someLongAsyncTasks()函数中有许多不同的情况,其中一个案例函数没有调用回调函数。

很快,

检查你的someLongAsyncTasks()函数是否在每种情况下调用你的回调函数。