0

ステータス更新のためにサービスメソッドをポーリングする次の 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'});
}));

ただし、テストはまだ失敗します。

前もって感謝します

4

0 に答える 0