如何使测试用例覆盖管道内的语句(map...使用jest

Vee*_*era 5 jestjs angular

我正在使用角度。

Component code

 httpClient.post(URL, requestBody)
   .pipe(map((result) => {
      serviceCall(result);
 }));
Run Code Online (Sandbox Code Playgroud)

如何使用 Jest 测试用例覆盖管道内的代码(映射?

我编写了如下的笑话测试用例,但它没有覆盖管道内的语句

  spyOn(httpClient, 'post').and
    .returnValue(new Observable( observer => {
    observer.next([]);
  }));
Run Code Online (Sandbox Code Playgroud)

小智 3

当涉及到测试时,代码覆盖率没有任何意义。它只是表明引擎读取了这部分代码。

但如果您想覆盖它,您将必须测试流的最终结果。

spyOn(httpClient, 'post').and.returnValue(of({}));
spyOn(yourService, 'serviceCall').and.returnValue(of({ id: 1 });

myFunction().subscribe(res => expect(res.id).toEqual(1));
Run Code Online (Sandbox Code Playgroud)