我在使用jasmine的单元测试中遇到了这个错误:
未捕获类型错误:无法读取未定义抛出的属性"filter">
我的功能:
info() {
this.requestService.postRequest('Reports', 'getInfo', {})
.subscribe(
data => {
this.places = data.places;
this.types = data.types.filter(obj => obj.id != 20);
this.loading = false;
},
error => {
console.log(error);
this.loading = false;
});
};
测试:
it('When call requestService.postRequest', () => {
spyOn(component.requestService, 'postRequest').and.returnValue(of({}));
component.info();
expect(component.requestService.postRequest).toHaveBeenCalled();
expect(component.requestService.postRequest).toHaveBeenCalledTimes(1);
});
data
对象似乎没有types
属性(或places
属性(。看起来您需要更改
spyOn(component.requestService, 'postRequest').and.returnValue(of({}));
至
spyOn(component.requestService, 'postRequest').and.returnValue(of({
places: [],
types: []
}));