即使未通过测试,测试用例也会自动超时
const getAsync = async () => 1
test("expect inside async", async (done) => {
const a = await getAsync()
// expect(a).toEqual(1) this will pass
expect(a).toEqual(2)
done()
})
预期:测试失败,不等于
但是, 结果
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
我想我的问题在于“完成”的论点。
当我使用done参数时,测试不会失败 但是当我删除它时,测试将失败。
但是我仍然不知道使用“在异步等待中完成吗?
答案 0 :(得分:0)
按Jest documentation进行操作,这就是异步处理,等待处理的方法。异步等待将始终期望返回值。
test('expect inside async', async () => {
expect.assertions(1);
const a = await getAsync();
expect(a).toEqual(2);
});
或者,如文档中所述,
test('expect inside async', async () => {
expect.assertions(1);
await expect(getAsync()).resolves.toEqual(2);
});
答案 1 :(得分:0)
另请参阅:https://github.com/facebook/jest/issues/3519
如果您使用纯异步等待未完成,请参阅@Acanthika的答案
如果您使用done:
test.only("should not pass", async (done) => {
try {
const a = await getAsync()
expect(a).toEqual(2)
done()
} catch (e) {
// have to manually handle the failed test with "done.fail"
done.fail(e)
}
})