gpt4 book ai didi

javascript - 用 Jest 测试 setTimeout 上的毫秒参数

转载 作者:行者123 更新时间:2023-12-04 08:28:33 25 4
gpt4 key购买 nike

我有一种使用带有 setTimeout 的 promise 触发暂停的方法:

pause = ({ time } = {}) => {
const pauseTime = time || 500;

return new Promise((resolve) => {
setTimeout(() => {
resolve()
}, pauseTime)
})
}
我想用 Jest 来测试它,期望 timeout 函数获取 pause 方法接收的时间参数。
jest.useFakeTimers();

const setTimeoutSpy = spyOn(window, 'setTimeout')
const pausePromise = pause({ time: 2500 })


await jest.runAllTimers();

pausePromise.then(() => {
expect(setTimeoutSpy).toHaveBeenCalledTimes(1);
expect(setTimeoutSpy).toHaveBeenCalledWith(2500);
})

jest.useRealTimers();
return pausePromise
我尝试过模拟和 spy 。也尝试过没有计时器并等待 promise 。但我总是得到相同的结果: 预期 spy 被调用了一次,但它被调用了零次。
任何的想法?
谢谢!

最佳答案

最后我发现了这个问题。
这是 spy 实现的一个问题:

  • 我在做spyOn(...而不是 jest.spyOn(...
  • 我改变了我监视的对象 windowglobal

  • 感谢大家的评论!

    关于javascript - 用 Jest 测试 setTimeout 上的毫秒参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65135435/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com