我正在尝试添加一个测试来测试以下代码部分,但我不确定如何,因为输出显示60-109未发现行。它看起来像这样:public async ngOnInit() { const data = await this.requestAppService.getData() this.tableModel = { // Line 60 ...this.tableModel, rows: data.map( /* * Map data */ ) } this.subscriptions.push( /* Add a subscription */ ) // Line 109}我正在使用的测试如下所示:it('...', fakeAsync(() => { const spy = spyOn(component, 'ngOnInit').and.callThrough() component.ngOnInit() tick() expect(spy).toHaveBeenCalled()}))这只是我认为我应该如何测试它的猜测,但它似乎并没有涵盖所有内容。我也试过了callFake,也没用。it('...', fakeAsync(() => { const spy = spyOn(component, 'ngOnInit').and.callFake(() => Promise.resolve()) component.ngOnInit() tick() expect(spy).toHaveBeenCalled()}))
1 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
问题在于spyOn声明。你在监视ngOnInit功能。您必须监视服务的 getData功能。
requestAppService如下所示注入和使用实例,
it('...', fakeAsync(() => {
const spy = spyOn(requestAppService, 'getData').and.callThrough()
component.ngOnInit()
tick()
expect(spy).toHaveBeenCalled()
}))
或者
如果你想getData给你一些模拟data或promise,
it('...', fakeAsync(() => {
const spy = spyOn(requestAppService, 'getData').and.callFake(() => {
return new Promise((resolve) => {
resolve(YOUR_OBJECT);
});
component.ngOnInit()
tick()
expect(spy).toHaveBeenCalled()
}))
添加回答
举报
0/150
提交
取消