在数据库异步操作期间使用 jest.useFakeTimers() 时测试会卡住

问题描述 投票:0回答:1

我正在尝试做一些需要使用假计时器的测试。我没有在这里展示完整的测试,因为问题可以简化为这样。重点是,当我调试时,它卡在

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"

async-await jestjs nestjs usefaketimers
1个回答
0
投票

{ doNotFake: ['nextTick'] }
的参数中添加
jest.useFakeTimers()
可确保
process.nextTick
不会被Jest的假定时器伪造。这使得依赖于
process.nextTick
的异步操作能够正常工作,防止事件循环出现问题,并确保等待循环和其他异步代码按预期运行。

© www.soinside.com 2019 - 2024. All rights reserved.