在此测试代码中,
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()
模拟了足够的流逝时间,所以cb()
被击中了.但在这一次,
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
并且测试通过?