0

这是茉莉花测试中的错误:

TypeError: Cannot read property 'length' of undefined throw\nUncaught TypeError: Cannot read property 'length' of undefined throws *

代码:

getReports(form){
  this.requestService.postRequest('DB', 'detailEvent', {'form': form, 'table': typeTemp.table, 'actionReport': tipoTemp.action}).subscribe(
    data => {
      this.events = data.events.length ? data.events : [];
    },
    error => {
      console.log(error);
    });
 };

我的测试:

it('Should call requestService.postRequest', () => {
  spyOn(component.requestService, 'postRequest').and.returnValue(of({events:[]));
  let form = {};
  component.getReports(form);
  expect(component.requestService.postRequest).toHaveBeenCalled();
  expect(component.requestService.postRequest).toHaveBeenCalledTimes(3);
});
4

1 回答 1

0

data.events 可以是未定义的。您需要执行类似(data.events || []).lengthdata.events?.length || 0(最新的 ecmascript)之类的操作。

于 2021-06-18T19:57:51.467 回答