Я очень новичок в React Testing Library и попытался пройти простой тест. Если пользователь отправляет форму с пустым полем имени, появится предупреждающее сообщение «Поле имени не может быть пустым». Это сообщение отображается в браузере, как и ожидалось, и мой тест пройден.
it("When the create button is pressed, if the input field is empty, prevent the user from being added", async () => {
const createUserWithBlankName = render(<CreateUserModal/>);
await wait(() => fireEvent.click(createUserWithBlankName.getAllByText("Create")[1]));
expect(createUserWithBlankName.getAllByText("Name field cannot be empty")).toBeTruthy();
});
Хотя тест пройден, мне интересно, есть ли лучший способ исправить fireEvent. На данный момент, это довольно хакерски, потому что слово «Создать» появляется два раза (сначала в абзаце, а затем как кнопка «Создать»). Есть ли лучший способ рефакторинга этого теста?
Я пытался использовать getByRole , но { name: "Create" }
нельзя назначить параметру типа 'ByRoleOptions'.
await wait(() => fireEvent.click(createUserWithBlankName.getByRole("button", { name: "Create" }));