Написание тестов с помощью библиотеки тестирования зависит от деталей реализации моей библиотеки пользовательского интерфейса.
Я использую @testing-library
чтобы проверить мой React
проект, который использует Material-UI
в качестве основной библиотеки пользовательского интерфейса. В качестве@testing-library
предполагает, что его основная философия - тестировать приложение точно так же, как пользователь будет его использовать. например, нажмите кнопку с надписью " Отправить" или отредактируйте ввод с меткой " Имя пользователя" и т. д. И библиотека тестирования дает мне несколько вспомогательных методов, напримерgetByText
, getByLabel
, так далее....
Моя проблема в том, что для некоторых тестов, например, тестов ввода форм, мне нужно запросить значение ввода или изменить его текущее значение. мне нужноgetByLabel
чтобы запросить мою метку и перейти к родительскому компоненту, чтобы запросить входные данные, содержащиеся внутри. Библиотека предоставляетclosest
Помощник запросов DOM, но он бесполезен в некоторых ситуациях, подобных той, которую я только что описал.
Мне нравится писать тесты таким образом, я имею в виду написание тестов с точки зрения пользователя. Но проблема в том, что я слишком сильно зависим от деталей реализацииMaterial-UI
. Возможно, в следующем обновлении входные данные и соответствующая им метка не являются дочерними элементами узлов-предков и т. Д.
Что-то я делаю не так? Или это ловушка философии тестирования, которая@testing-library
обеспечивает?
Это мой стек пакетов:
{
"@material-ui/core": "^4.7.1",
"@material-ui/icons": "^4.5.1",
"@material-ui/lab": "^4.0.0-alpha.34",
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.4.0",
"react": "^16.11.0",
"react-dom": "^16.11.0",
"react-scripts": "3.3.0-next.62"
}