📅  最后修改于: 2023-12-03 14:43:06.163000             🧑  作者: Mango
当使用 Jest 框架测试异步代码的时候,经常会遇到异步回调函数未被调用或者调用时间太长导致测试失败的问题。这个问题通常是由于异步回调未被正确处理导致的,比如回调函数未被返回或者被忘记调用等。
在 Jest 中可以设置异步回调的超时时间,可以使用 jest.setTimeout(timeout)
函数来指定超时时间,单位是毫秒。默认超时时间是 5000 毫秒。
jest.setTimeout(10000); // 设置超时时间为 10 秒
如果在指定的时间内,异步回调函数未被调用,则 Jest 会抛出一个 TimeoutError
异常,测试也会被失败。这时我们需要检查代码是否正确处理了异步回调函数或者是否存在异步回调漏洞。
test("异步回调超时测试", () => {
return new Promise((resolve) => {
setTimeout(resolve, 15000); // 15 秒超时
});
});
在上面的例子中,超时时间为 15 秒,如果 Promise 回调函数在 15 秒内未被执行,则抛出 TimeoutError
异常。
要解决 Jest 中异步回调超时问题,可以采用以下方法:
async
/await
关键字或者 done()
回调函数以下给出使用 async
/await
关键字的示例代码:
test("异步回调测试 - async/await", async () => {
await expect(Promise.resolve("成功")).resolves.toBe("成功");
});
在这个例子中,使用 Promise
对象返回一个成功的结果,然后使用 expect()
函数进行期望值测试,并使用 resolves
关键字表示期望对象是一个 Promise
对象并已经被成功解决。最终验证期望结果是否为 "成功"。