[英]How are async tests executed in Jest
我正在嘗試使用 Jest 進行測試。 我想了解 JEST 在以下情況下的行為:
請檢查下面的 sippet 以供參考。
我想知道測試是否在這兩種情況下都異步執行。
it('should do async stuff...', async () => {
const result = await doSomething();
expect(result).toBe('value');
})
it('should do async stuff...', () => {
async () => {
const result = await doSomething();
expect(result).toBe('value');
}();
})
提前致謝
由於第二個測試的 function 沒有聲明為async
,它將同步運行。 自調用 function 將被執行,但 Jest 將在任何事情發生之前關閉執行 scope。
您可以使用以下擴展代碼段的代碼自己清楚地看到它:
async function doSomething(ms) {
return new Promise((resolve) =>
setTimeout(() => {
resolve("value");
}, ms)
);
}
describe("compare async tests", () => {
it("test 1", async () => {
const result = await doSomething(2000);
console.log("test 1", { result });
expect(result).toBe("value");
});
it("test 2", () => {
(async () => {
const result = await doSomething(1000);
console.log("test 2", { result });
expect(result).toBe("value");
})();
});
});
運行上述代碼會將兩個測試都標記為成功,但您只會在控制台 output 中看到“測試 1”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.