gpt4 book ai didi

javascript - 如何在 Mocha 测试中模拟时间的流逝,以便调用 setTimeout 回调?

转载 作者:IT王子 更新时间:2023-10-29 03:13:39 27 4
gpt4 key购买 nike

我需要测试依赖于 setTimeout 的 JavaScript 代码以便执行周期性任务。我如何从我的 Mocha 测试中模拟时间的流逝,以便调用 setTimeout 回调?

我基本上要求类似于 Jasmine's Mock Clock 的功能,它允许您将 JavaScript 时间提前一些滴答。

最佳答案

我发现 Sinon.JS 支持通过 sinon.useFakeTimers 操纵 JavaScript 时钟,如其 Fake Timers 中所述。文档。这是完美的,因为我已经将 Sinon 用于模拟目的,而且我想 Mocha 本身不支持它是有道理的,因为它更多地属于模拟库的领域。

这是一个使用 Mocha/Chai/Sinon 的例子:

var clock;
beforeEach(function () {
clock = sinon.useFakeTimers();
});

afterEach(function () {
clock.restore();
});

it("should time out after 500 ms", function() {
var timedOut = false;
setTimeout(function () {
timedOut = true;
}, 500);

timedOut.should.be.false;
clock.tick(510);
timedOut.should.be.true;
});

关于javascript - 如何在 Mocha 测试中模拟时间的流逝,以便调用 setTimeout 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17446064/

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