我有以下sinon.js / chai.js测试我的javascript类。
describe('tick', function() {
beforeEach(function() {
this.clock = sinon.useFakeTimers();
});
afterEach(function() {
this.clock = sinon.restore();
});
it('should increase the time waited for all translators', function() {
let queue = new TranslatorQueue();
queue.join("translator1");
this.clock.tick(1000);
expect(_.head(queue.queue).timeWaiting).to.equal(1);
queue.join("translator2");
this.clock.tick(1000);
expect(_.head(queue.queue).timeWaiting).to.equal(2);
expect(_.last(queue.queue).timeWaiting).to.equal(1);
});
});

测试在我的开发机器上正常运行,但测试从未完成,并且在尝试在我的登台服务器上运行测试时似乎进入无限循环。我想这与模拟计时器有关,但我该怎么做呢?
答案 0 :(得分:1)
嗯,通过写出来回答你自己的问题的整个过程似乎在这里起作用了。
为了将来参考,问题是由于sinon.useFakeTimers()
比我们可能更喜欢的更为过度。
鉴于我的代码仅使用setInterval()
,我可以通过将虚假调用更改为
this.clock = sinon.useFakeTimers("setInterval");
我在此处找到了相关信息:https://github.com/sinonjs/sinon/issues/484
我不能100%确定为什么它可以在我的机器上运行而不是服务器...