如何订阅角度服务单元测试中的错误案例

Posted

技术标签:

【中文标题】如何订阅角度服务单元测试中的错误案例【英文标题】:How to subscribe to error case in angular service unit testing 【发布时间】:2020-01-15 20:29:59 【问题描述】:

我正在尝试订阅响应以及错误案例,但是当我看到覆盖范围时,它不会出错。

我有以下虚假服务,

我的服务,

fakeService: 

     appVersion() : 

        return of('version':'1.2.3.4')
      

测试用例1:

 it('Should load version',() => 

    fakeService.appVersion().subscribe((data) 

      expect(data.version).toBe(1.2.3.4)

  );

测试用例 2:[对于错误用例]

  it('Should return error',() => 
   fakeService: 

     appVersion() : 

        return throwError('Error');
      
   
    fakeService.appVersion().subscribe(
     error : err => expect(err).toBe('Error');

  );
 

在组件中

   myService.appVersion.subscribe((data) 
      if (data) 
       //// Covered
       else (err) 
       //// Not covered
      

   );

我正在尝试订阅响应以及错误案例,但是当我看到覆盖范围时,它不会出错。

【问题讨论】:

【参考方案1】:

现在您并没有真正测试该订阅的错误案例。要做到这一点,你需要更像

myService.appVersion().subscribe((data) 
  if (data) 
    //// Covered
  
, (err) => 
    //// Now covered
  
);

按照您编写的方式,您可以使用它进行测试

fakeService: 
  appVersion() : 
    return of(null);
   

【讨论】:

以上是关于如何订阅角度服务单元测试中的错误案例的主要内容,如果未能解决你的问题,请参考以下文章

如何在订阅Angular7单元测试用例中对代码进行单元测试

如何编写使用mergeMap()的角度服务的单元测试?

用玩笑进行单元测试时,如何以角度模拟 ResizeObserver polyfill?

在开玩笑的单元测试角度显示正确的错误

角度单元测试是否根据来自服务的数据调用组件方法

在角度指令单元测试中注入服务