我試圖通過循環從異步調用返回的數組來動態生成測試。我只是不知道如何做到這一點 - 無論是使用摩卡或使用笑話。爲了說明使用代碼,下面的例子同步工作: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()
鉤子中運行一些異步初始化,然後我使用它來動態生成測試。
任何關於如何使用摩卡或笑話這樣做的指針?