我的组件上有ngOnInit
方法,类似于以下内容:
public ngOnInit(): void {
this.subscription = this.myService.myGetter.subscribe(...);
}
我试图通过模拟我的服务并监视我的getter来测试这个方法。例如,我的模拟服务看起来像:
export class MockedService {
public get myGetter(): Subject<MyData[]> {
return;
}
}
在我的测试规范中的TestBed配置中,我在我的providers数组中包含了模拟服务并注入了服务:
{ provide: MyService, useClass: MockedService }
let myService = fixture.debugElement.injector.get(MyService);
然后,在我的实际测试中,我监视此属性并返回预期值:
const serviceSpy: jasmine.Spy = spyOnProperty(myService, 'myGetter', 'get').and.returnValue(Observable.of(sampleData));
当需要测试方法时,我会继续接收:
无法准备属性订阅未定义
我不确定为什么会这样。我正在监视这个属性并返回一个Observable来监视它。
如果我尝试将MockedService中的return
更改为其他内容(返回实际值,比如一个字符串),它似乎有效,因为错误消息让我知道subscribe
在myGetter
上不存在。
有什么想法吗?