私はMochaでテストしているときに、実行する必要のある非同期テストと同期テストの組み合わせをしばしば持っています。モカは私の非同期テストでのみ待機しタイムアウトを知っていますか?
私のテストが非同期であるときはいつも、モカはこれを美しく処理してコールバックdone
を指定することができます。
私の質問は、内部的に私のテストを観察し、それが非同期動作を待つべきことを知っていますか?テスト関数でコールバックパラメータが定義されているときは、いつでも待機するようです。以下の例では、最初のテストがタイムアウトする必要があります。user.save
が無名関数を呼び出す前に、2番目のテストが完了して終了する必要があります。
// In an async test that doesn't call done, mocha will timeout.
describe('User', function(){
describe('#save()', function(){
it('should save without error', function(done){
var user = new User('Luna');
user.save(function(err){
if (err) throw err;
});
})
})
})
// The same test without done will proceed without timing out.
describe('User', function(){
describe('#save()', function(){
it('should save without error', function(){
var user = new User('Luna');
user.save(function(err){
if (err) throw err;
});
})
})
})
このnode.jsは特定の魔法ですか? Javascriptでこれを行うことができるのでしょうか?
これは正しい例です。関数の長さ関数に関するドキュメントを見るには、以下のGeorgeの答えを見てください。 –