Я пытаюсь написать модульные тесты для веб-приложения React Spa, использующего архитектуру микроинтерфейса. Мой первый шаг — написать модульные тесты для контейнера приложения.
Реагирующий компонент контейнера приложения использует react-router, содержащий переключатель с последующими маршрутами для отображения компонентов в области основного содержимого.
Каждое приложение монтируется в контейнер приложения с помощью интеграции среды выполнения JavaScript.
Я использую React-Testing-Library и Jest как часть своего набора инструментов для тестирования.
Я провел поиск по всему Интернету и не нашел полезных статей по волнующим меня проблемам. В большинстве из них показана демонстрация тестирования веб-приложения, которое не относится к моему сценарию.
У меня есть 3 проблемы, по которым я хотел бы получить консультацию.
-
Поскольку микро-интерфейсы состоят из нескольких уровней компонентов, связанных вместе аутентификацией и другой бизнес-логикой. Должен ли я тестировать только «компоненты страницы»? Или я должен тестировать весь контейнер приложения, начиная с компонента приложения? Если ни то, ни другое не соответствует действительности, как мне протестировать это приложение?
-
Я пытался протестировать на уровне компонента страницы, чтобы избежать проблем с аутентификацией и для простоты, но компонент содержит компонент из библиотеки React Router, и Jest жалуется, что я не должен использовать компонент
<Link>
, который не заключен в компонент<Router>
. Однако компонент<Router>
присутствует на уровне родительского компонента при выполнении во время выполнения. Как я могу сказать Jest «игнорировать» эту проблему?Мне не удалось найти конфигурацию, позволяющую игнорировать эту ошибку.
-
Из-за проблемы № 2 я попытался написать модульные тесты, визуализируя компонент
<App>
, но этот компонент передается компоненту более высокого порядка, который выполняет проверку подлинности. Как я могу сосредоточиться на тестировании конечного результата, а не на функциональности HOC аутентификации, чтобы я мог заставить компонент отобразиться и выполнить мои тесты?
Термин микрофронтенд в вашем вопросе сбивает меня с толку. Это имеет очень конкретное значение — это на самом деле микрофронтенд приложение, или вы задаете общие вопросы о тестировании реагирующих компонентов? Приложение микрофронтенда содержит «связующий» код, а затем содержит кучу отдельных компонентов (которые могут быть написаны на различных фреймворках, даже на vanilla js).
Приложение представляет собой микро-интерфейс. У меня есть только опыт написания модульных тестов для простого фиктивного приложения, которое не использует аутентификацию или микроинтерфейс; Но теперь я столкнулся с приложением, в котором есть и то, и другое, что меня действительно сбивает с толку, поэтому я ищу помощь в понимании того, как мне это сделать.
Что делает его микрофронтендом? Если все приложение написано на React, а источники компонентов поступают из разных мест/репозиториев, это не микрофронтенд, это просто React-приложение. Ответ на номер 2 прост — в настройках теста вы оборачиваете
Router
вокруг вашего предметного компонента.