Angular 9 unit test属性'of'在类型'typeof Observable'上不存在]]

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

我正在编写单元测试用例,并试图监视服务功能,但被困在将数组转换为可观察到的状态上,我在堆栈溢出方面尝试了类似的问题,但没有任何效果。请帮助我如何调用服务功能

我正在开发最新版本的angular和ngrx

我尝试过的选项

1)

spyOn(service, 'getData').and.returnValue(Observable.of(data));

2)这个未涵盖单元测试组件中的订阅部分

spyOn(service, 'getData').and.returnValue(of(data));

整个代码:测试用例永远不要输入this.dataService.getState()的订阅部分”>

// component:

getState(){
    this.dataService.getState().subscribe(s => s.forEach(element => {
      this.data.push(element.name);
    }));
}
  
//test case

beforeEach(() => {
    fixture = TestBed.createComponent(DataComponent);
    component = fixture.componentInstance;
    service = TestBed.inject(DataService);
    fixture.detectChanges();
  });
  
it('should call get data Function', () => {
    spyOn(service, 'getData').and.returnValue(of(data));
  });

我正在编写单元测试用例,并试图监视服务功能,但被困在将数组转换为可观察到的状态上,我在堆栈溢出方面尝试了类似的问题,但没有任何效果。请帮助我...

angular karma-jasmine ngrx
2个回答
0
投票

[设置测试时,调用fixture.detectChanges时组件会实例化。由于实例化调用生命周期挂钩,因此ngOnInit函数中的任何代码都将在您的第一个测试规范之前执行。

如果data是常数,请执行:


0
投票

您正在fixture.detectChanges()内部运行beforeEach是问题。调用detectChanges的那一刻,您的组件已初始化,因此,请如下修改代码

© www.soinside.com 2019 - 2024. All rights reserved.