非同期呼び出しから返された配列をループしてテストを動的に生成しようとしています。私はこれを行う方法を理解できません - モカを使うか、または冗談を使うか。コードを使用して説明するために、次の同期の例では、動作します。その配列が非同期にフェッチされている場合JestまたはMocha:非同期初期化に基づいて動的にテストを作成する
describe("Test using various frameworks",() => {
["mocha", "jest"].forEach(framework => {
it(`Should test using ${framework}`,() => {
expect(true).toBe(true);
});
});
});
をしかし、私は配列は、それをループしようとする前にフェッチされるまで待つようにテストフレームワークを取得することはできません。
async function getFrameworks() {
//TODO: get it from some async source here
return ["mocha", "jest"];
}
describe("Test using various frameworks",() => {
var frameworks;
//before() instead of beforeAll() if using mocha
beforeAll(async()=> {
frameworks = await getFrameworks();
});
frameworks.forEach(framework => {
it(`Should test using ${framework}`,() => {
expect(true).toBe(true);
});
});
});
これは、Cannot read property 'forEach' of undefined
と表示されません。私はasync/await
とPromise
を使用し、done
コールバックを渡しても何の役にも立たなかった。
私が最も近かったのは、Mochaの--delayフラグを使用していましたが、問題の一部しか解決しませんでした。私の実際のユースケースで実際にやりたいことはbefore()
またはbeforeAll()
フックで非同期初期化を実行してから、テストを動的に生成することです。
mochaまたはjestを使用してこれを行うにはどのような指針がありますか?自分の質問に答えるために