sinon.useFakeTimers()
可以存根全局Date构造函数new Date()
sandbox.useFakeTimers
有哪些用途和用例?
从文档
伪造计时器并将时钟对象绑定到沙箱,以便在调用sandbox.restore()时也将其还原。通过sandbox.clock访问
仍不清楚如何使用第二种方法。new Date()
中的SUT
仍返回原始时间戳
最佳答案
这个想法不是要替换日期。这是为了避免等待docs中所说的setTimout:
假计时器是setTimeout和朋友的同步实现
Sinon.JS可以覆盖全局函数,从而使您能够
使用它们更轻松地测试代码
这是有关如何使用它的示例:
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/