新しいモカバージョンの場合:
これでプロモをモカに返すことができ、モカはそれが完了するのを待ってから続行します。たとえば、次のテストは成功します:
let a = 0;
before(() => {
return new Promise((resolve) => {
setTimeout(() => {
a = 1;
resolve();
}, 200);
});
});
it('a should be set to 1', () => {
assert(a === 1);
});
ここにドキュメントがあります
古いモカバージョンの場合:
他のすべてが発生する前に非同期リクエストを完了させたい場合done
は、beforeリクエストでパラメータを使用し、コールバックで呼び出す必要があります。
Mochaはdone
、次のブロックの処理を開始するために呼び出されるまで待機します。
before(function (done) {
db.collection('user').remove({}, function (res) { done(); }); // It is now guaranteed to finish before 'it' starts.
})
it('test spec', function (done) {
// execute test
});
after(function() {});
ただし、データベース内のリクエストは単純なコードの実行と比べてかなり長くなる可能性があるため、データベースを単体テスト用にスタブ化しないと実行が大幅に遅くなる可能性があるため、注意が必要です。
詳細については、Mochaのドキュメントを参照してください。
before
ハンドラーからpromiseを確実に返す必要があるだけです。例before(function () { return db.collection...}