Jestjs 福米克,开玩笑,是的:如何测试验证?

Jestjs 福米克,开玩笑,是的:如何测试验证?,jestjs,formik,yup,Jestjs,Formik,Yup,我找不到测试表单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', { persi

我找不到测试表单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!
  })

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

wrapper
      .find('MyInnerForm')
      .props()
      .submitForm()
如果组件MyInnerForm包含调用submitForm的Formik表单,则不会导致运行Formik验证。相反,我会这样做:

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

然而,如果这不能解决你的问题,我举了一个完整的例子,你可以看看

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

wrapper
      .find('MyInnerForm')
      .props()
      .submitForm()
如果组件MyInnerForm包含调用submitForm的Formik表单,则不会导致运行Formik验证。相反,我会这样做:

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

然而,如果这不能解决你的问题,我举了一个完整的例子,你可以看看

您可以直接在验证架构上验证表单值

const-yup=require'yup' const contactSchema=yup.object{ 名称:yup.string .需要, 年龄:是的 .必须 积极乐观的 整数 } const errors=wait contactSchema.validate{ 姓名:'肯尼斯', 年龄:-35.5 }凯瑟先生{ 返回错误 }; console.logerrors,errors;
您可以直接在验证架构上验证表单值

const-yup=require'yup' const contactSchema=yup.object{ 名称:yup.string .需要, 年龄:是的 .必须 积极乐观的 整数 } const errors=wait contactSchema.validate{ 姓名:'肯尼斯', 年龄:-35.5 }凯瑟先生{ 返回错误 }; console.logerrors,errors;
谢谢,但我还是失败了。。。我添加了一个日志,您可以看到:submitCount=1和isValid=false。所以这是一种工作。但是错误是{}你能分享你的组件代码吗?如果错误为空,则验证可能有问题。谢谢,但在我这方面仍然失败。。。我添加了一个日志,您可以看到:submitCount=1和isValid=false。所以这是一种工作。但是错误是{}你能分享你的组件代码吗?如果错误为空,则验证可能有问题。