2017-05-22 24 views
0

非同期関数のテストを書きたいと思います。MochaJSが非同期関数を待機していません

// 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(); 
    }); 
}); 

あなたはsomeLongAsyncTasks()はその仕事を終えるまで待つ必要がありますので、私はit()のコールバック関数にdoneを渡している見ての通り。しかし、私はまだこのエラーが発生しています:

Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. 

何が欠けていますか? it()が私の非同期機能と発射タイムアウトエラーを待っていないのはなぜですか?

答えて

0

OK私は自分の質問に答えます。私は問題を理解した。実際のsomeLongAsyncTasks()関数では、多くの異なるケースがあり、これらのケースの関数の1つはコールバック関数を呼び出さないということです。まもなくで

はあなたsomeLongAsyncTasks()関数がどのような状況で、あなたのコールバック関数を呼び出しているか確認してください。

+0

また、問題のコードが実際に解決しようとしている問題を示していることを確認してください。 – robertklep

関連する問題