throwError使其他测试用例在Angular 6中失败

时间:2019-02-27 16:07:23

标签: angular unit-testing observable karma-jasmine

我在组件中有Angular个服务调用,该调用返回可观察到的值,如果还有http错误,它也会在组件中抛出:

private loadData(): void {
    this.someService.getdata(filter)
      .pipe(
        catchError((error: any) => {
          this.loadingError$.next(true);
          return throwError(error);
        })
      ).subscribe(
        (data:any[]) => {
          this.records = data;
        }
      );
}

在测试用例中,我试图使其抛出异常以覆盖catchError代码部分,我具有以下TC:

it ('should handle error', (done) => {
    const err = new Error('fake error');
    spyOn(someService, 'getData').and.returnValue(throwError(err));

    component.loadingError$.subscribe((error) => {
        expect(error).toBe(true);
        component.loadingError$.unsubscribe();
        done();
    });

    component.ngOnInit();
});

loadData中调用方法ngOnInit。 我将debugger放在期望值之后,结果是正确的,但是此TC随机导致其他TC发生故障。

有什么主意吗?

0 个答案:

没有答案