Проблема в том, что вы делаете fireEvent.click(submitButton)
, который запускает событие click
на кнопке. Ваша форма не прослушивает это событие, а прослушивает событие отправки в форме. Вы должны сделать это вместо fireEvent.submit(formElement)
.
Некоторые другие вещи, которые я заметил, не обязательно неправильны, но могут быть лучше.
Нет необходимости импортировать getByTestId
, вы получите его из render
:
// Before
import { render, getByTestId } from '@testing-library/react'
const { container } = render(<Component />)
getByTestId(container, 'foo')
// After
import { render } from '@testing-library/react'
const { getByTestId } = render(<Component />)
getByTestId('foo')
Говоря о getByTestId
, вы должны использовать его как последнее средство. В вашем случае гораздо лучше использовать getByLabelText
для получения входных данных и getByText
для поиска кнопки. Чтобы получить form
, вы можете использовать getByText('Submit').closest('form')
.
Вам следует использовать метод cleanup
, чтобы избежать проблем в ваших тестах.