如何在测试代码覆盖率中覆盖 catchError

时间:2021-02-24 12:37:47

标签: angular

如何在我的角度测试中覆盖 catchError?

this.service.method().pipe(
  tap(ret=>{
   console.log('my return', ret);
  }),
 catchError(error=>{
   console.log('error occured');
   return throwError(error);
  })
).subscribe();

在我的测试中,我模拟了服务和方法。

let serviceMock = jasmine.createSpyObj('Service',{
 method: of({message: 'success'})
})

tap 内的代码被覆盖,但不在 catchError 中。

1 个答案:

答案 0 :(得分:2)

您可以模拟如下错误:

let isError = false;
let serviceMock = jasmine.createSpyObj('Service',{
 method: isError ? throwError('') : of({message: 'success'})
})

通过这种方式,您可以将测试用例中的 isError 设置为成功或错误。