Как протестировать функцию с использованием Jest и Enzyme в React TDD - PullRequest
0 голосов
/ 10 мая 2018

В моем компоненте есть функция, которая выглядит примерно так:

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 .

Я старался изо всех сил, чтобы найти способ проверить эту функцию, но я не могу. Может кто-нибудь, пожалуйста, помогите мне с этим? Я борюсь с этим.

1 Ответ

0 голосов
/ 10 мая 2018

toggleFilter предполагается принять два аргумента. Вы не проходите ни одного в вашем тесте expect(wrapper.instance().toggleFilter()). Вот что вызывает исключение.

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