#reactjs #react-redux #field #react-testing-library #react-forms
Вопрос:
Это моя область:
<Field
name="postcode"
label="Postcode"
nonReduxFormInputProps={{ id: 'postcode' }}
component={TextInput}
/>
В моем тесте я делал это до сих пор, и это проходит, но я думаю, что это неправильно, потому что для имени «почтовый индекс» в коде начинается со строчной буквы, но в моем тесте он проходит только в том случае, если имя с большой буквы «Р». Я также не знаю, как бы я проверил ярлык, нерЕдуксФормИнпутПропы и компонент.
describe('postcode field', () => {
it('should render a Field component with correct props', () => {
render(<TestForm />);
expect(screen.getByRole('textbox', { name: 'Postcode' })).toBeInTheDocument();
Ответ №1:
{ name: 'Postcode' }
Запрос соответствует атрибуту метки, а не атрибуту имени. Вот что говорит доктор:
Вы можете запросить возвращаемые элементы по их доступному имени. Доступное имя для простых случаев равно, например, метке элемента формы, или текстовому содержимому кнопки, или значению атрибута aria-label.
Вы можете ознакомиться с подробностями здесь: https://testing-library.com/docs/queries/byrole
Комментарии:
1. Ах так, для имени=»почтовый индекс», что бы я тогда использовал?
2. Основная идея библиотеки тестирования заключается в тестировании с «точки зрения пользователя», а это означает, что запрос должен использовать атрибуты «доступные пользователю».
label
доступен пользователю, ноname
не доступен. Вот что они говорят ( testing-library.com/docs/queries/about ): «С помощью опции name вы можете фильтровать возвращаемые элементы по их доступному имени. Это должно быть вашим главным предпочтением практически во всем».3. ах, значит, нет необходимости все проверять в полевых условиях? Я переношу тесты с энзима, и оригинальные тесты включены : ожидайте(postcodeField.prop(«имя»)). Равным(«почтовый индекс»); ожидайте(postcodeField.prop(«метка»)). Тобетрути();
4. Я считаю, что философия тестирования библиотек отличается от ферментативной. «Тестовый интерфейс (то есть пользователь), а не реализация (компонента)»