Angular [karma]对Observable的异步测试

问题描述 投票:2回答:1

我尝试测试异步情况。我的组件:

  ngOnInit(private service: MyService) {
    this.isLoading = true;
    this.service.getData().subscribe((data) => {
      this.data = data;
      this.isLoading = false;
    });
  }

如您所见,我将loading设置为true,并且在检查数据时isLoading变为false。这是我想要测试的。我尝试使用tick(),whenStable ...我窥探MyService以返回带有mockData的Observable,但我无法捕获isLoading为true。

谢谢你的帮助。

angular typescript rxjs karma-jasmine
1个回答
1
投票
it('should ...', done => {
  const dataMock = {};
  spyOn(component['service'], 'getData').and.returnValue(of(dataMock);
  component['service'].getData().pipe(delay(500)).subscribe(data => {
    expect(component.data).toBe(dataMock));
    expect(component.isLoading).toBeFalsy();
    done();
  });

  expect(component.isLoading).toBeTruthy();
});
© www.soinside.com 2019 - 2024. All rights reserved.