我正在ngOnInit钩子中执行initializeTimer方法。在initializeTimer中,我定义了rxjs间隔,该间隔负责递减组件Input中传递的数字。现在我要测试此方法,但是出现错误
Expected undefined to equal 9.
我不知道如何测试此订阅。我读到一些有关fakeAsync和tick的内容,但对我来说似乎不起作用。按照形式,不会触发ngOnInit。
零件
@Input() timeLeft: number;
timer: number;
observableTimer: Subscription;
constructor() { }
ngOnInit() {
this.initializeTimer();
}
initializeTimer() {
this.observableTimer = interval(1000).subscribe(val => {
const timeLeft = this.timeLeft - val;
if (timeLeft === 0) {
this.onTimesUp();
}
this.timer = timeLeft;
});
}
测试
it('expect timer to decrement', fakeAsync(() => {
component.timeLeft = 10;
fixture.detectChanges();
tick(1000);
fixture.detectChanges();
expect(component.timer).toEqual(9);
}));
最佳答案
不幸的是,使用interval
和fakeAsync
测试rxjs tick
存在一个长期存在的错误。您可以在此link下阅读更多有关它的信息。