我正在尝试做一些需要使用假计时器的测试。我没有在这里展示完整的测试,因为问题可以简化为这样。重点是,当我调试时,它卡在
await triggerRepository
上。如果我删除假计时器,等待就会解决并且测试会顺利进行。我做错了什么?谢谢!
describe('Get all triggers', () => {
beforeEach(async () => {
jest.useFakeTimers();
});
afterEach(() => {
jest.runOnlyPendingTimers();
jest.useRealTimers();
});
test('trigger status updates true', async () => {
const savedTrigger = await triggerRepository.findOne(trigger.id);
expect(savedTrigger.status).toBe(TriggerStatus.TRIGGER_STATUS_REGULAR);
});
});
我尝试在异步调用后提前计时器,但测试没有达到该线。
我正在使用
"ts-jest": "^27.0.3"
和 "jest": "^27.2.5"
在
{ doNotFake: ['nextTick'] }
的参数中添加jest.useFakeTimers()
可确保process.nextTick
不会被Jest的假定时器伪造。这使得依赖于 process.nextTick
的异步操作能够正常工作,防止事件循环出现问题,并确保等待循环和其他异步代码按预期运行。