gpt4 book ai didi

javascript - sandbox.useFakeTimers 用例

转载 作者:行者123 更新时间:2023-12-03 07:32:05 26 4
gpt4 key购买 nike

sinon.useFakeTimers() 可以 stub 全局 Date 构造函数 new Date()

sandbox.useFakeTimers 具有哪些用途和用例?

来自文档

Fakes timers and binds the clock object to the sandbox such that it too is restored when calling sandbox.restore(). Access through sandbox.clock

目前还不清楚如何使用第二种方法。

SUT 中的new Date() 仍然返回原始时间戳

最佳答案

这个想法不是要取代 Date;而是要取代 Date。这是为了避免等待 setTimout,正如文档中所述:

Fake timers is a synchronous implementation of setTimeout and friends that Sinon.JS can overwrite the global functions with to allow you to more easily test code using them

以下是如何使用它的示例:

var assert = require('assert');
var sinon = require('sinon');

var executed = false;

function doSomething() {
setInterval(function() {
executed = true;
}, 10000);
}

describe('doSomething', function() {

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

afterEach(function() {
this.clock = sinon.restore();
});

it('should execute without waiting on the timeout', function(){
doSomething();
this.clock.tick(10001);
assert.equal(executed, true);
});

});

在此示例中,函数 doSomething 将在 10000 毫秒后执行。我们可以使用 this.clock.tick(10001) 来模拟时间的流逝,然后断言测试正在通过,而不是等待它来断言测试。

关于javascript - sandbox.useFakeTimers 用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35774627/

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