使用jest测试异步代码例子
时间: 2024-05-10 22:21:35 浏览: 149
以下是一个使用Jest测试异步代码的例子:
```js
// asyncFunc.js
export const asyncFunc = async (x) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (x > 0) {
resolve(x * 2);
} else {
reject('x must be greater than 0');
}
}, 1000);
});
};
```
```js
// asyncFunc.test.js
import { asyncFunc } from './asyncFunc';
describe('asyncFunc', () => {
it('should resolve with the correct value', async () => {
const result = await asyncFunc(2);
expect(result).toBe(4);
});
it('should reject with an error message', async () => {
expect.assertions(1);
try {
await asyncFunc(-2);
} catch (error) {
expect(error).toBe('x must be greater than 0');
}
});
});
```
在上面的测试中,我们使用了`async/await`语法来处理异步代码。我们测试了两种情况:当传入一个大于0的数时,应该返回该数的两倍;当传入一个小于等于0的数时,应该抛出一个错误消息。我们在第二个测试用例中使用了`expect.assertions(1)`语句来确保至少有一个断言被执行。
阅读全文