akn*_*ds1 36 javascript bdd mocking mocha.js
我需要测试依赖于setTimeout的 JavaScript代码才能执行定期任务.我如何从我的Mocha测试中模拟时间的流逝,以便调用setTimeout回调?
我基本上要求的功能类似于Jasmine的模拟时钟,它允许你将JavaScript时间提前一些.
akn*_*ds1 56
我发现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;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15534 次 |
| 最近记录: |