相关疑难解决方法(0)

开玩笑:计时器和承诺不能正常工作.(setTimeout和async函数)

关于此代码的任何想法

jest.useFakeTimers() 

it('simpleTimer', async () => {
  async function simpleTimer(callback) {
    await callback()    // LINE-A without await here, test works as expected.
    setTimeout(() => {
      simpleTimer(callback)
    }, 1000)
  }

  const callback = jest.fn()
  await simpleTimer(callback)
  jest.advanceTimersByTime(8000)
  expect(callback).toHaveBeenCalledTimes(9)
}
Run Code Online (Sandbox Code Playgroud)

```

失败了

Expected mock function to have been called nine times, but it was called two times.
Run Code Online (Sandbox Code Playgroud)

但是,如果我await从LINE-A中删除,则测试通过.

Promise和Timer不能正常工作吗?

我认为开玩笑的原因是等待第二个承诺来解决.

javascript testing jestjs

25
推荐指数
2
解决办法
7235
查看次数

标签 统计

javascript ×1

jestjs ×1

testing ×1