我可以用 Jasmine 测试 setInterval 吗?
Can I test setInterval with Jasmine?
我的代码中有这个语句,我想知道如何使用 Jasmine 测试 setInterval。
const x = setInterval(() => {
const countdown = getElementById('countdownWrapper');
const systemTime = ...
const now = new Date().getTime();
const endTime = systemTime - now;
countdown.querySelector('.countdown-time').innerHTML = time();
if (endTime < 0) {
clearInterval(x);
countdown.classList.remove('countdown-time--show');
}
}, 1000);
系统时间是从 HTML.
中数据内容属性中的纪元值提供的
如有任何帮助,我们将不胜感激
beforeEach(function() {
timerCallback = jasmine.createSpyObj("setInterval");
jasmine.clock().install();
});
afterEach(function() {
jasmine.clock().uninstall();
});
it("causes a timeout to be called", function() {
setTimeout(function() {
timerCallback();
}, 1000);
expect(setInterval).not.toHaveBeenCalled();
jasmine.clock().tick(1001);
expect(setInterval).toHaveBeenCalled();
});
更正 Benny 的回答:
timerCallback = jasmine.createSpyObj("test", {setInterval: 0});
AND
expect(timerCallback.setInterval).not.toHaveBeenCalled();
另外,这并没有测试 setInterval,它在这里被嘲笑了。这测试 setTimeout!
我的代码中有这个语句,我想知道如何使用 Jasmine 测试 setInterval。
const x = setInterval(() => {
const countdown = getElementById('countdownWrapper');
const systemTime = ...
const now = new Date().getTime();
const endTime = systemTime - now;
countdown.querySelector('.countdown-time').innerHTML = time();
if (endTime < 0) {
clearInterval(x);
countdown.classList.remove('countdown-time--show');
}
}, 1000);
系统时间是从 HTML.
中数据内容属性中的纪元值提供的如有任何帮助,我们将不胜感激
beforeEach(function() {
timerCallback = jasmine.createSpyObj("setInterval");
jasmine.clock().install();
});
afterEach(function() {
jasmine.clock().uninstall();
});
it("causes a timeout to be called", function() {
setTimeout(function() {
timerCallback();
}, 1000);
expect(setInterval).not.toHaveBeenCalled();
jasmine.clock().tick(1001);
expect(setInterval).toHaveBeenCalled();
});
更正 Benny 的回答:
timerCallback = jasmine.createSpyObj("test", {setInterval: 0});
AND
expect(timerCallback.setInterval).not.toHaveBeenCalled();
另外,这并没有测试 setInterval,它在这里被嘲笑了。这测试 setTimeout!