Пересмешивать onSubmit в реакции-окончательной форме с использованием библиотеки-тестирования-реакции - PullRequest
0 голосов
/ 23 января 2020

У меня есть форма, построенная с использованием react-final-form, yup и Material-ui. Я тестирую с использованием Jest и @testing-library/react.

TL; DR:

  • Есть ли способ для проверки и проверки только функции onSubmit при обходе / использовании validate функциональность?
  • Есть ли лучший способ go об этом?

Поддельная функция onSubmit не была вызвана, потому что я использовал RFF s validate функция. Кажется, функция validate зависает во время процесса отправки. Помимо насмешек над функцией validate, существует ли передовой опыт при построении функции валидатора, чтобы тесты распознавали, что имитированный onSubmit был вызван?

Когда я пытаюсь проверить, форма была отправлена, похоже, она зависла в методе проверки.

fireEvent.submit(getByTestId('test-form')) // or
fireEvent.click(getByTestId('submit-button'))

mocking function failure

Функция mocked 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>
  )
/>

Edit flamboyant-tesla-qozho

1 Ответ

1 голос
/ 29 января 2020

Мне удалось точно определить источник проблемы. Я использовал validate опору, не издеваясь над ней в моих тестах. Я решил эту проблему, раздумывая / тестируя функцию validate отдельно. Большое спасибо @ErikR за помощь ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...