У меня есть форма, построенная с использованием react-final-form
, yup
и Material-ui
. Я тестирую, используя Jest
и @testing-library/react
.
TL;DR:
- Есть ли способ имитировать и тестировать только функцию
onSubmit
, обходя/используя функциональностьvalidate
? - Есть ли лучший способ сделать это?
Поддельная функция onSubmit
не была вызвана, потому что я использовал функцию validate
RFF
. Кажется, функция validate
зависает во время процесса отправки. Помимо имитации функции validate
, существует ли лучшая практика в создании функции проверки, чтобы тесты распознавали, что была вызвана имитируемая функция onSubmit
?
Когда я пытаюсь проверить, была ли форма отправлена, она, кажется, зависает в методе проверки.
fireEvent.submit(getByTestId('test-form')) // or
fireEvent.click(getByTestId('submit-button'))
Смоделированная функция onSubmit не распознается и, похоже, зависает в методе validate
.
const schema = yup.object().shape({
code: yup
.string()
.trim()
.required('Please provide a Code')
.max(32, 'The Code is too long')
})
const validate = values =>
schema
.validate(values, { abortEarly: false })
.then(valid => ({}))
.catch(err => extractError(err))
<Form
onSubmit={onSubmit}
validate={validate}
render={({ handleSubmit }) => (
<form onSubmit={handleSubmit}>
{...fields and submit button here}
</form>
)
/>
@testing-library/react
, так что, может быть, вы можете заглянуть в этот источник, чтобы получить некоторые идеи? - person Erik R.   schedule 24.01.2020validate
. Существует ли лучший способ проверить полную интеграцию формы без необходимости имитировать функцию проверки? Я просматривал проверку Final-Forms тестирует, но не может найти пример, который включает в себя тестирование вымышленногоonSubmit
@ErikR. - person jdkschang   schedule 25.01.2020validate
. Может быть, вы можете показать мне более конкретный пример, который терпит неудачу? Я не понимаю. - person Erik R.   schedule 27.01.2020validate
, и чтобы он прошел. Есть ли способ выполнить всю форму, пройдя тест? Или вы рекомендуете тестировать поведение отдельно? --также спасибо за всю вашу работу надRFF
иFF
???????? - person jdkschang   schedule 27.01.2020