哈士奇WWW
2022-12-09 19:42:10
我正在嘗試添加一個測試來測試以下代碼部分,但我不確定如何,因為輸出顯示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
提交
取消