sinon.useFakeTimers()
可以存根全局Date构造函数new Date()
哪些用途和用例有sandbox.useFakeTimers
?
来自文档
伪造计时器并将时钟对象绑定到沙箱,以便在调用sandbox.restore()时也将其恢复。通过sandbox.clock访问
目前还不清楚如何使用第二种方法。
new Date()
中的 SUT
仍会返回原始时间戳
答案 0 :(得分:0)
这个想法不是取代日期;这是为了避免像在文档中所说的那样等待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)来模拟测试通过时,而不是等待它来断言测试,然后断言测试正在通过。