ステータス更新のためにサービスメソッドをポーリングする次の ngOnInit 関数を持つコンポーネントがあります。
ngOnInit() {
this.waitingForMachineToStart = interval(2000)
.pipe(
distinctUntilChanged(),
switchMap(() => this.machineService.getMachineStatus(this.machineId)),
)
.subscribe(res => {
this.machineStatus = res.status;
if (this.machineStatus === 'STARTED') {
this.machineStarted = res
this.notify()
}
});
}
次のコードを使用して、更新が実際に行われていることをテストしようとしています。
beforeEach(() => {
fixture = TestBed.createComponent(UploadComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should start checking for status updates', fakeAsync(() => {
const machineService = TestBed.get(MachineService);
spyOn(machineService, 'getMachineStatus').and.returnValue(Observable.create().pipe(map(() => {status :'STARTED'})));
// Should not be initialised yet
expect(component.machineStarted).toBeUndefined();
tick(2000);
//FAILING TEST
expect(component.machineStarted).toBe({status :'STARTED'});
}));
ただし、テストはまだ失敗します。
前もって感謝します