e.target не найден в модульном тестировании jest для обработчика событий реагирующего компонента, несмотря на передачу второго параметра в .simulate () фермента - PullRequest
0 голосов
/ 22 января 2019

, поэтому у меня есть выпадающий список, где пользователи могут выбирать из списка провинций.

                    <select
                        className="province-select"
                        onChange={this.regionSelected}
                    >
                        <option>
                            Ontario
                        </option>
                        <option>
                            Quebec
                        </option>
                    </select>

В моем модульном тесте я хочу вызвать событие on change и убедиться, что this.regionSelected вызвано, как и ожидалось

const wrapperSuccess = shallow(<RegionSelector {...validData} />);

        wrapperSuccess.find(".province-select").simulate('change', { target: { value: 'Ontario' } });

Мой компонент RegionSelector работает и работает в реальной среде. Однако, когда я запускаю модульный тест выше, я получаю следующую ошибку:

Невозможно прочитать свойство 'target' из неопределенного

setCurrentRegion(e.target.value)

setCurrentRegion - это первая строка кода, которая вызывает e.target.value внутри функции обработчика изменений this.regionSelected. Я проверил документацию фермента и несколько других ответов о переполнении стека, и все они говорят, что передают второй объект события. Но я! И все же e.target не найден. Что мне не хватает? Спасибо

1 Ответ

0 голосов
/ 23 января 2019

Ока!Догадаться.Кажется, причина в том, что eventHandler - это метод самого компонента.Если бы это был EventHandler, пропущенный через реквизит, все было бы хорошо.Но по какой-то причине, используя jest's shallow (), даже передав второй параметр в функцию simulate (), eventHandler не получит его.Я работал над этим, следя за прототипом самого компонента, и это, похоже, сработало

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