Jestjs 福米克,开玩笑,是的:如何测试验证?
我找不到测试表单yup验证的方法: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
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。所以这是一种工作。但是错误是{}你能分享你的组件代码吗?如果错误为空,则验证可能有问题。