Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Testing React app

Testing React app

Short story about how tests your React+Redux application with Jest and Enzyme

Anisimov Kirill

June 12, 2019
Tweet

Transcript

  1. Проблемные места • Файловая и внутренняя структура тестов • Snapshot’ы

    • Shallow vs Mount vs Render • imports, styles, axios, redux … -> ??? • Redux store
  2. Snapshot’ы • Компонент максимально статичен и почти никогда не меняется

    (верстка, stateless компоненты) • Детерминированные тесты (Запуск одних и тех же тестов для компонента, который не менялся, должен возвращать одинаковые результаты) • При рефаторинге существующих компонентов Применять: Не применять: • Во всех остальных случаях
  3. Shallow vs Mount vs Render Shallow • constructor • render

    Life cycle methods Не рендерит дочерние компоненты Основной метод при работе с тестами Mount • constructor • render • componentDidMount • componentDidUpdate Life cycle methods Рендерит дочерние компоненты Используется если необходимо работать с *DidMount/DidUpdate Render • render Life cycle methods Рендерит дочерние компоненты Нужен если не важен Life Cycle
  4. • Всегда начинайте с shallow • Если нужно протестировать функционал

    componentDidMount или componentDidUpdate, то используем mount • Если нужно протестировать множество методов завязанных на Life Cycle и взаимодействие с дочерними элементами, используем mount • Если нужно протестировать отображение дочерних элементов, и методы жизненного цикла нас не интересуют, используем render Когда что использовать?
  5. Imports Мокируем модуль внутри файла doMock блокирует всплытие и позволяет

    переопределять имплементацию Мокируем функцию
  6. PrepareRegulationPlan.test.tsx PrepareRegulationPlan.tsx Импорт класса без HOC connect Мокаем необходимые Redux

    поля 
 И передаем их непосредственно в компонент Подменяем Redux
  7. Ссылки на полезные ресурсы Модульное тестирование React (Jest/Enzyme) - https://xasfq

    Тестирование Node.js-проектов - https://gjqap Unit Testing React Components - https://afgqga Difference between Shallow, Mount and render of Enzyme - https://jtaqcnz