Тестирование в Redux - какой сейчас самый лучший способ? - PullRequest
0 голосов
/ 24 марта 2020

Я много читал о тестировании в Redux и вижу два разных метода тестирования. Просто интересно, что все теперь предлагают о лучшем или лучшем методе тестирования. Из того, что я вижу, более распространенным способом является проверка ваших действий, редукторов, селекторов, как в документах Redux - https://redux.js.org/recipes/writing-tests/

Однако эти тесты больше похожи на то, что они тестируют детали реализации для меня, а не поведенческие. Поэтому, оглянувшись вокруг, я наткнулся на библиотеку тестов, которая пишет тесты в более поведенческом стиле, однако кажется менее распространенным - https://testing-library.com/docs/example-react-redux

Было бы здорово услышать отзывы людей о том, какой метод вы используете. Вы используете / рекомендуете?

1 Ответ

0 голосов
/ 24 марта 2020

Контекст: я работаю над приложением React Native, которое имеет общий пакет с веб-приложением. В shared-пакете у меня есть магазин (с 90% + покрытием). Так вот мое мнение.


Тестирование Redux:

Плюсы:

  • Тестирование действий, редукторы, селекторы намного проще, чем реагируют компоненты, так как это всего лишь модульное тестирование.

Минусы:

  • Действия, редукторы, селекторы имеют одинаковую форму так что это много шаблонов.
  • тестирование создателей действий является худшим, так как все тесты выглядят.
it('Should create an action of SET SELECTED SUCCESS', () => {
    const expectedAction = {
      type: ModuleA_ActionEnum.SET_SELECTED_SUCCESS,
      payload: fakeSuccess,
    };
    expect(moduleA_Actions.setSelectedSuccess(fakeSuccess)).toEqual(expectedAction);
  });

Советы:

  • Используйте typesafe-actions , для stati c тестирования действий (и игнорируйте покрытие для действий).
  • Если вы выполняете много запросов с промежуточным программным обеспечением, таким как redux-saga используйте redux-saga-запросы (или другие инструменты, или создайте свои собственные), которые создают действия и редукторы в общей форме c и проверяются только один раз.
  • Проверка только редукторов и селекторы.

Тестирование компонентов React:

Плюсы:

  • Не столько шаблон, сколько Поведение компонентов отличается.
  • Дальше интереснее.

Минусы:

  • Сложно настроить (создать обертки, макет магазина, ThemeProvider ... ), еще сложнее для React Native.
  • Трудно проверить некоторые компоненты.

Вывод:

Я бы протестировал Redux и React компоненты. Используйте инструменты, чтобы уменьшить шаблон и уменьшить количество тестов.

Для папки redux я постараюсь достичь 90% + покрытия (при необходимости игнорировать файлы).

Для компонентов React попытаться тестируйте столько, сколько я могу, но если это занимает много времени, добавьте // @todo add test for this component и работайте над этим в свободное время между функциями (например, ожидание QA).

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