Модульный тест для массива с методом .find в angular с использованием jest - PullRequest
0 голосов
/ 27 мая 2020

Как получить покрытие для массива с помощью метода .find в angular. У меня проблемы с приведенным ниже фрагментом кода.

sample.component.ts

public permissions = [{id: 0, value: 'fruit' }, {id: 1, value: 'vegetable'}];
this.filteredList = this.permissions.slice();
public isFiltered(permission) {
    return this.filteredList.find(item => item.id === permission.id);
}

sample.spe c .ts

it('should call myMethod ', () => {
  expect(component.isFiltered(1)).toEqual(true);
});

Я получаю следующую ошибку: TypeError: Cannot read property 'find' of undefined

Любая помощь приветствуется

1 Ответ

1 голос
/ 27 мая 2020

напишите это так

 it('should call myMethod ', () => {
   let permissions = [{id: 0, value: 'fruit' },{id: 1, value: 'vegetable'} ];
   component.filteredList = permissions.slice();
   expect(component.isFiltered({id:1}).value).toEqual('vegetable');
 });

Вам нужно указать значение component.filteredList

UPDATE

, как вы используете persmissions.id в вашем ts для фильтрации вам необходимо передать объект со свойством id (для фильтрации) в isFiltered(). Также isFiltered не возвращает логическое значение, а возвращает объект (т.е. сам результат поиска), поэтому мы проверяем его значение как требуемое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...