单元测试OnInit中的订阅无效

问题描述 投票:0回答:1

我已经对ngOnInit上的一个observable进行了修改,现在我正在尝试为此编写测试,这似乎不起作用。

这是我正在尝试测试的课程

ngOnInit() {
  this.myService.updates$.pipe(takeUntil(unsusbribe$))
   .subscribe(update => {
     this.feeds = update;
  })
}

这是我的单元测试

it('should set feeds when an update is sent', fakeAsync(() => {
const update = 'fakeUpdate';
component.ngOnInit();
  const serviceSpy = spyOn(myService, 'updates$').and.returnValue(timer(500).pipe(mapTo(update)))
tick(500);
expect(serviceSpy).toHaveBeenCalled(); 
}))

此测试失败,错误Expected spy updates$ to have been called.

任何人都可以帮我解决这个问题。

angular jasmine karma-jasmine angular-unit-test
1个回答
0
投票

正确使用间谍服务的方式。请试试这个。

  it('should set feeds when an update is sent', fakeAsync(() => {
    const update = 'fakeUpdate';
    const serviceSpy = spyOn(myService, 'updates$');
    serviceSpy.and.returnValue(timer(500).pipe(mapTo(update)))
    tick(500);
    expect(serviceSpy).toHaveBeenCalled(); 
  }))
© www.soinside.com 2019 - 2024. All rights reserved.