Контекст: я работаю над приложением 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).