Ошибка жасмина / кармы, так как не может прочитать свойство undefined - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь создать покрытие всей строки (Жасмин / Карма), но я получаю сообщение об ошибке, как Не удается прочитать свойство 'search' из неопределенного

Вот мой код для кода компонента.

public search() {
  if (this.searchCompany.length) {
    let term = this.searchCompany;
    this.tempList = this.tempNameList.filter(tag => {
      if (tag.companyName.toLowerCase().indexOf(term.toLowerCase()) > -1) {
        return tag;
      }
    });
  } else {
    this.resetCompanies();
  }
}

Вот код ниже для спецификации, которую я попробовал

it('should search the data', () => {
  component.search;
  expect(component.search()).toBeUndefined();
});

Пожалуйста, помогите мне с вышеуказанной ошибкой, что я здесь делаю не так

1 Ответ

0 голосов
/ 28 августа 2018

Поскольку ваш метод поиска имеет оператор if - мы можем написать как минимум два модульных теста.

Это для случая, когда нет поискового тега - мы ожидаем, что resetCompanies будет вызван, если у нас будет пусто searchCompany:

  it('should resetCompanies if search is empty', () => {
    component.searchCompany = '';
    spyOn(component, 'resetCompanies').and.callFake(() => null);

    component.search();

    expect(component.resetCompanies).toHaveBeenCalled();
  });

И это для случая, когда у нас есть поисковый тег и поиск работает - мы ожидаем, что массив tempList в конечном итоге будет состоять из одного элемента { companyName: 'test' }, поскольку наш поисковый тег test соответствует условию в логике фильтра:

  it('should search company', () => {
    component.searchCompany = 'test';
    component.tempList = [];
    component.tempNameList = [
      { companyName: 'abc' },
      { companyName: 'test' },
      { companyName: 'def' },
    ];

    component.search();

    expect(component.tempList).toEqual([{ companyName: 'test' }]);
  });
...