Как установить локальное состояние компонента при тестировании с использованием jest и реагировать на тестирование библиотеки? - PullRequest
0 голосов
/ 09 января 2019

Используя фермент AirBnB, мы можем установить состояние компонента:

const loginComponent = shallow(<Login />);
loginComponent.setState({ error: true });

Я хочу сделать то же самое, используя реагирующую библиотеку.

Спасибо!

1 Ответ

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

Вы не можете сделать это с помощью реагирующей на тестирование библиотеки. Это потому, что RTL хочет, чтобы вы протестировали свой компонент так, как это сделал бы пользователь.

Что это значит? В реальной жизни ваш компонент изменит состояние после того, как что-то произойдет. Возможно, пользователь ввел неправильные данные или API вернул код ошибки.

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

Этот подход немного сложнее реализовать, чем предлагает Enzyme, но ваши тесты будут более надежными. Это потому, что вы собираетесь протестировать весь поток, а не просто сосредоточиться на том, что визуализируется при возникновении определенного состояния.

Кроме того, скажем, что вы реорганизуете свой код и изменяете, как работает состояние. RTL-тесты будут безразличны, пока взаимодействие пользователей с вашим приложением одинаково. Тест на фермент не пройдёт, потому что он больше не знает, как взаимодействовать с внутренними компонентами вашего компонента.

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