В моем компоненте есть функция, которая выглядит примерно так:
toggleFilter = (type, name) => {
const filterApplied = this.state.appliedFilterList[type].includes(name);
if (filterApplied) {
//Remove the applied filter
this.setState(prevState => ({
appliedFilterList: {
...prevState.appliedFilterList,
[type]: prevState.appliedFilterList[type].filter(filter => filter !== name)
}
}));
} else {
//Add the filter
this.setState(prevState => ({
appliedFilterList: {
...prevState.appliedFilterList,
[type]: [...prevState.appliedFilterList[type], name]
}
}));
}
};
где applyFilterList является объектом и выглядит примерно так:
appliedFilterList: {
a: [],
b: [],
t: []
},
Итак, я пытаюсь написать тестовый пример для этой функции, используя Jest и Enzyme, вот так:
it("checks toggleFilter function", () => {
const wrapper = shallow(
<ProductList
headerText="Hello World"
productList={data}
paginationSize="10"
accessFilters={["a 1", "a 2"]}
bandwidthFilters={["b 1", "b 2"]}
termsFilters={["t 1", "t 2"]}
appliedFilterList={appliedFilter}
/>
);
expect(wrapper.instance().toggleFilter()).toBe(true);
});
, где data и applyFilter - это 2 массива, которые я создал с жестко закодированными значениями.
Сбой теста и выдача ошибки: TypeError: Невозможно прочитать свойство 'includes' of undefined в toggleFilter .
Я старался изо всех сил, чтобы найти способ проверить эту функцию, но я не могу. Может кто-нибудь, пожалуйста, помогите мне с этим? Я борюсь с этим.