Вы правы, подозревая свой метод тестирования в отношении того, как эта библиотека тестирования хочет, чтобы вы тестировали. Самый простой ответ на этот вопрос - использовать запрос getByDisplayValue. Он будет искать ввод, текстовое поле или выбор, который имеет значение, которое вы пытаетесь найти. Например, используя ваш компонент в качестве примера, если бы я пытался проверить, что inputValue = 'test', я бы выполнял поиск как
expect(screen.getByDisplayValue('test')).toBeInTheDocument();
Это все, что вам нужно сделать. Я предполагаю, что ваш тест отображает только компонент MyModal. Даже если у вас есть несколько входов, это не имеет значения с точки зрения философии тестирования. Пока getByDisplayValue находит какой-либо ввод с этим значением, это успешный тест. Если у вас есть несколько входов и вы хотите проверить, что конкретный вход имеет значение, вы можете затем копаться в элементе, чтобы определить, что это правильный вход:
примечание: вам понадобится jest-dom, чтобы это работало . expect(screen.getByDisplayValue('test')).toHaveAttribute('id', 'the-id');
или (без jest-dom):
expect(screen.getByDisplayValue('test').id).toBe('the-id');
Конечно, вы можете искать любой атрибут, который вам нравится.
Один Последняя альтернатива для проверки значения - найти вход по роли. Это не сработает в случае вашего примера, если вы не добавите метку и не присоедините ее к своему вводу через атрибут htmlFor. Затем вы можете протестировать его так:
expect(screen.getByRole('input', { name: 'the-inputs-id' })).toHaveValue('test');
или (без jest-dom):
expect(screen.getByRole('input', { name: 'the-inputs-id' }).value).toBe('test');
Я считаю, что это лучший способ проверить значение, убедившись, что правильный ввод имеет значение. Я бы предложил метод getByRole, но, опять же, вам нужно будет добавить метку к вашему примеру.