如下的异步函数add
返回 promise:
const add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (a < 0 || b < 0) {
return reject("Numbers must be non-negative");
}
resolve(a + b);
}, 2000);
});
};
有两种方法测试异步代码:
- 调用
done()
告知Jest异步进程已经完成,这里的done
也可以是别的名称。
test("Should add two numbers", (done) => {
add(2, 3).then((sum) => {
expect(sum).toBe(5);
done();
});
});
- 使用
async / await
, 因为代码更清晰,这种方法更为常见。
test("Should add two numbers async/await", async () => {
const sum = await add(1, 30);
expect(sum).toBe(31);
});