等待后如何测试数据
How to test data after await
我正在尝试添加一个测试来测试以下代码部分,但我不确定如何添加,因为输出显示第 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()
}))
问题出在 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()
}))
我正在尝试添加一个测试来测试以下代码部分,但我不确定如何添加,因为输出显示第 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()
}))
问题出在 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()
}))