在此测试代码中,
test('test', async () => {
jest.useFakeTimers();
const cb = jest.fn();
const func = jest.fn().mockResolvedValueOnce(1);
setTimeout(async () => {
setTimeout(() => {
cb();
}, 1000);
}, 1000);
jest.runAllTimers();
});
因为jest.runAllTimers()
模拟了足够长的传球时间,
test('test', async () => {
jest.useFakeTimers();
const cb = jest.fn();
const func = jest.fn().mockResolvedValueOnce(1);
setTimeout(async () => {
await func();
setTimeout(() => {
cb();
}, 1000);
}, 1000);
jest.runAllTimers();
expect(cb).toHaveBeenCalledTimes(1);
});
cb()
从未被命中。
我应该如何修改此测试代码,使其正确命中cb
并通过测试?
1条答案
按热度按时间0tdrvxhp1#
你的计时器是在解析承诺(从
func
返回)之后定义的。所以为了运行计时器,你必须等待它被启动。你可以通过等待func
返回的承诺来完成。要访问jestmock函数返回的数据,可以使用它的
.mock
属性例如: