Formik onSubmit处理程序不会在酶测试中调用

时间:2019-06-26 17:16:01

标签: reactjs enzyme formik

我有使用Formik的简单表单组件(InterestedOffering.tsx),并将onSubmit函数作为道具传递。在我的单元测试(酶)中,我检查提交表单时是否调用了传递的prop函数,但失败了

InterestedOffering组件

<Formik
          initialValues={{
            name: '',
            phone: '',
            offering: 'test offering'
          }}
          validationSchema={interestedOfferingSchema}
          onSubmit={(values, {setSubmitting}) => {
            setFormValues(values);
            props.changeSaleDetails(values);
            openModal();
            setSubmitting(false);
          }}>

          {({errors, touched, isSubmitting}) => (
            <Form>
              <Field name="name"> .... more

InterestedOffering.test文件

let mock = jest.fn();

    const wrapper = mount(<InterestedOffering
      changeSaleDetails={mock}/>);

    act(() => {

      const nameField = wrapper.find('input[name="name"]');
      const phoneField = wrapper.find('input[name="phone"]');
      const offeringField = wrapper.find('input[name="offering"]');
      nameField.simulate('change', {
        persist: () => {
        },
        target: {value: 'test name', name: 'name'}
      });
      phoneField.simulate('change', {
        persist: () => {
        },
        target: {value: 12313, name: 'phone'}
      });
      offeringField.simulate('change', {
        persist: () => {
        },
        target: {value: 'test offering', name: 'offering'}
      });

      const form = wrapper.find('form');
      form.simulate('submit', {
        preventDefault: () => {
        },
      });

    });

    setTimeout(() => {
      wrapper.update();
      expect(mock).toHaveBeenCalled();
      done();
    }, 0);

我通过输入错误的数据并以相同的方式提交表单来编写验证测试。那测试通过了。 我不为什么这个模拟功能永远不会得到调用。确实也增加了超时时间,但没有帮助。

0 个答案:

没有答案