[Angular7][Jest]如何测试合并图?

[Angular7][Jest]如何测试合并图?,angular,testing,rxjs,jestjs,angular7,Angular,Testing,Rxjs,Jestjs,Angular7,我需要你的帮助:) 我使用了angular 7和Rxjs。为了考试,我开玩笑 我的组件在2个httpClient之间使用MergeMap,如下所示: addPost() { this.postService.createPost(post).pipe( mergeMap( (response) => { return this.postService.getPost(response.headers.get('Location'));} ) ).subscribe(

我需要你的帮助:)

我使用了angular 7和Rxjs。为了考试,我开玩笑

我的组件在2个httpClient之间使用MergeMap,如下所示:

addPost() {
  this.postService.createPost(post).pipe(
    mergeMap( (response) => { return this.postService.getPost(response.headers.get('Location'));} )
  ).subscribe(
    (post) => {
      this.content =""; this.postService.addingPostToArray(post);
    }, (error) => {
      //todo
    }
  );
}
it('should test addPost OK', () => {
postService = TestBed.get(PostService);
spyOn(postService, 'createPost').and.returnValue(of('test'));
spyOn(postService, 'getPost').and.returnValue(of('test'));

component.addPost();

expect(postService.createPost).toHaveBeenCalled();
expect(postService.getPost).toHaveBeenCalled();
我的邮政服务:

createPost(post:Post) {
 return this.httpClient
   .post('http://localhost:8080/posts', {post: post}, {observe:  'response'}); 
}

getPost(url: any) {
   return this.httpClient.get<Post>(url);
}
}))

但问题是我的getPost从未被调用

expect(spy).toHaveBeenCalled()

Expected spy to have been called, but it was not called.

  131 |
  132 |     expect(postService.createPost).toHaveBeenCalled();
> 133 |     expect(postService.getPost).toHaveBeenCalled();
如何测试合并映射

我希望我的解释不要太奇怪:)


谢谢你的帮助;)

字符串测试将不具有属性response.headers.get('Location')

试一试


字符串测试不具有属性response.headers.get('Location')

试一试

spyOn(postService, 'createPost').and.returnValue(of({ headers: { get: _ => 'test' } }));