jestjs - Formik,开 Jest ,是的 : how to test validation?

标签 jestjs formik yup

我找不到测试表单是的验证的方法:

it('displays error on submit if name is empty', async () => {
    const wrapper = mount(<MyFormik/>)
    const getForm = () => wrapper.find('form')

    wrapper.find('input[name="name"]').simulate('change', {
      persist: () => {},
      target: {
        name: 'name',
        value: ''
      }
    })

    wrapper
      .find('MyInnerForm')
      .props()
      .submitForm()


    await wait(0) // await next tick or even 1s...
    wrapper.update()

    expect(
      wrapper
      .update()
      .find('.error')
      .exists()
    )
    .toBeTruthy() // FALSE!
  })

无论我是否在提交后等待,update wrapper errors prop 始终为空。

这里的解决方案对我不起作用:

https://github.com/jaredpalmer/formik/issues/1146

https://github.com/jaredpalmer/formik/issues/110

看起来包装器不会更新

这是提交后formik props的日志:

{ errors: {},
         label: '',
         name: 'name',
         type: 'text',
         values: { name: '' },
         touched: { name: true },
         isValidating: false,
         status: undefined,
         initialValues: { name: '' },
         validateOnChange: true,
         validateOnBlur: true } }
         ...

         submitCount: 1,
         isValid: false,

最佳答案

没有看到您的组件,我不完全确定出了什么问题。这可能不起作用:

wrapper
      .find('MyInnerForm')
      .props()
      .submitForm()

如果您的组件 MyInnerForm 包含调用 submitForm() 的 Formik 表单,则不会导致 Formik 的验证运行。我会做这样的事情:

wrapper.find("form").simulate("submit");

但是,如果这不能解决您的问题,我做了一个完整的示例,您可以查看 here .

关于jestjs - Formik,开 Jest ,是的 : how to test validation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55901053/

相关文章:

javascript - 无法让 Jest 与包含主题的样式化组件一起工作

reactjs - 如何将 Jest 与 opencV.js 一起使用?

node.js - 根据用户操作使用默认值初始化 Formik

javascript - Yup 中的条件验证

javascript - 使用 Joi 和/或 Yup 进行架构验证,如果存在任何其他属性,是否有办法制作所需的属性集合?

javascript - 为什么在没有 try/catch block 进行异步测试的情况下 Jest 会出错

javascript - 根据环境变量阻止 JEST 运行

reactjs - Formik 如何在表单提交时显示错误

javascript - Formik - 将自定义组件的自定义验证插入我当前工作的 Formik 表单

javascript - 如何使用带有 useFieldArray 的 react-hook-form 对动态表单进行 yup 验证