Сегодня поймал себя на довольно интересной мысли – зачем вообще нужен Enzyme?
Enzyme это всего-лишь возможность протестировать поведение и содержимое разметки компонента в различных условиях. Это всё, насколько я понимаю.
Таким образом, когда мы тестируем компоненты, мы создаем окружение, создаем компонент и проверяем что он повел себя, или отрендерился корректно. Для этого мы создаем стабы, моки, прокси-объекты, и проверяем ноды.
Функциональное тестирование в результате тоже проверяет поведение компонента, но связанное уже с целевыми пользовательскими сценариями. Без стабов, прокси-объектов и прочего, мы всё-равно проверим что система и компоненты в нужных нам сценариях работают корректно, так как если интеграция будет сломана, приложение сломается.
Таким образом, тесты на Enzyme это в конечном итоге лишь аналог функциональных тестов.
Поэтому, вопрос, зачем писать и "юниты" на Enzyme, и функциональные тесты одновременно?
Пока вижу плюсы:
1. Возможность всесторонне проверить работу компонента
2. Скорость тестирования значительно выше
С другой стороны, функциональное тестирование в сто раз проще (привязался к селектору, и всё; имхо).