您好我正在编写单元测试用例我正在使用Jasmine作为我的Angular 5组件。在页面加载时,我调用的是loadscopesdata方法来填充我的html代码中的网格。以下是我的单元测试用例。
it('Ng on init', () => {
component.ngOnInit();
});
以下是我的实际组件代码。
ngOnInit() {
this.loadScopesData();
}
下面是我的loadscopedata函数。
loadScopesData() {
this.scopeService.getScopesByTenantId(this._searchText, this._onlyActive).subscribe(results => this.onScopesDataLoadSuccessful(results), error => this.onScopesDataLoadFailed(error));
}
以下是我的onScopesDataLoadFailed函数。
onScopesDataLoadFailed(error: any) {
if (typeof error.error.title != 'undefined') {
this.alertService.stopLoadingMessage();
this.alertService.showMessage(error.error.title, error.error.status, MessageSeverity.error);
this.rows = [];
this.loadingIndicator = false;
}
}
我能够注入我的模拟服务并得到一些虚拟数据,一切都按预期工作但我收到以下错误
TypeError: Cannot read property 'title' of undefined
at ScopeEditorComponent.onScopesDataLoadFailed (http://localhost:9876/base/boot-tests.ts?195796ce0b6971c676ffa17a1f170941fa665d9e:135378:32)
以下是我更新的代码..
it('Ng on init', () => {
component.ngOnInit();
it('should error', () => {
spyOn(component['ScopeEndpoint'], 'getScopesByTenantId').and.callFake(() => Observable.throw({
error: {
title: 'Mocked title',
status: 404 // Mocked status
}
}));
});
});
有人可以帮我解决如何处理onScopesDataLoadFailed方法并摆脱这个错误吗?任何帮助将不胜感激。
答案 0 :(得分:2)
it('should error', () => {
spyOn(component['scopeService'], 'getScopesByTenantId').and.callFake(() => Observable.throw({ error: {
title: 'Mocked title',
status: 404 // Mocked status
}}));
});
这将模拟您的服务返回的错误。
it('Ng on init', () => {
spyOn(component['ScopeEndpoint'], 'getScopesByTenantId').and.callFake(() => Observable.throw({ error: {
title: 'Mocked title',
status: 404 // Mocked status
}}));
component.ngOnInit();
});