gpt4 book ai didi

javascript - 如何使用 mocha 测试内部使用 setTimeout() 的函数?

转载 作者:搜寻专家 更新时间:2023-11-01 05:09:22 25 4
gpt4 key购买 nike

考虑下面的函数,

function helloAfter100ms(){
setTimeout(function(){
console.log('hello');
},100)
}

用 mocha 测试代码,

describe('#helloAfter100ms()',function(){
it('console logs hello ONLY after 100ms',function(){
// what should go here
})
})

最佳答案

我认为您正在尝试测试不应该进行的测试。您的测试名称表明您不相信 setTimeout 函数仅在给定超时后调用 console.log

因为这不是您的代码,您可能不应该对其进行单元测试。此外,setTimeout 可能是您可以确保正常工作的东西。

那么还有什么要测试的呢?您的代码 - 调用 setTimeout 的代码。您可以确保正确调用 setTimeout。

至于如何做到这一点 - 您可以使用两个 sinon 功能。第一个是 useFakeTimers,它可以让您控制时钟。第二个是 spy ,您应该在 console.log 上使用它来确保它被调用。

describe('#helloAfter100ms()',function(){
it('console logs hello ONLY after 100ms',function(){
const clock = sinon.useFakeTimers();
const logSpy = sinon.spy(console, 'log');
helloAfter100ms();
expect(logSpy).to.not.have.been.called;
clock.tick(100);
expect(logSpy).to.have.been.calledOnce;
logSpy.restore();
clock.restore();
}
}

关于javascript - 如何使用 mocha 测试内部使用 setTimeout() 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46754569/

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