在我的Angular应用程序中,我使用IntervalObservable来定期执行某些操作(在我的情况下每个 5分钟):
IntervalObservable.create(300000) // 5 minutes
.subscribe(() => {
this.someMethodReturningObs().subscribe((data) => {
this.myData = data;
});
});
我怎么能对它进行单元测试?
答案 0 :(得分:2)
<强>更新强>
每5分钟验证一次this.myData
。
it("should test data for 5min interval", fakeAsync(() => {
tick(300000);
expect(myData).toBe(testValue);
}))
旧答案
Jasmine.clock
可以用于你的目的。
请查看doc
beforeEach(function() {
timerCallback = jasmine.createSpy("timerCallback");
jasmine.clock().install();
});
完成恢复后,请务必卸载时钟 原始计时器功能。
afterEach(function() {
jasmine.clock().uninstall();
});
当时钟到时,将触发对任何已注册回调的调用 通过jasmine.clock()。tick功能向前勾选,需要一个 毫秒数。
it("causes a timeout to be called synchronously", function() {
setTimeout(function() {
timerCallback();
}, 100);
expect(timerCallback).not.toHaveBeenCalled();
jasmine.clock().tick(300000);
expect(timerCallback).toHaveBeenCalled();
});