首页 > 解决方案 > 未捕获的类型错误:无法读取未定义抛出的单元测试 Jasmine 的属性“过滤器”

问题描述

我在用茉莉花进行单元测试时遇到这个错误:

未捕获的类型错误:无法读取未定义抛出的属性“过滤器”

我的功能:

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);
});

标签: javascripttypescriptkarma-jasmine

解决方案


data对象似乎没有types属性(或places就此而言的属性。看起来您需要更改

spyOn(component.requestService, 'postRequest').and.returnValue(of({}));

spyOn(component.requestService, 'postRequest').and.returnValue(of({
  places: [],
  types: []
}));

推荐阅读