Как проверить обещание в formik handleSubmit с шуткой / энзимом? - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь проверить обещание в. Затем от handleSubmit от formik ... У меня есть два ожидаемых () для двух обещаний, тест для первого работает, но не для второго.

Вот мой тест:

it('should submit the form with success', () => {

    let patchUserPromise = jest
      .fn()
      .mockImplementation((userId, value) => Promise.resolve(userId, value));

    let fetchUserPromise = jest
      .fn()
      .mockImplementation((value) => Promise.resolve(value));

    const renderedComponent = mount(
      <Provider store={store}>
        <MemoryRouter>
          <UserEditForm
            user={values}
            patchUserPromise={patchUserPromise}
            fetchUserPromise={fetchUserPromise}
            currentDomain={{name: 'example.net', id: 6}}
          />
        </MemoryRouter>
      </Provider>,
    );

    renderedComponent.update();

    renderedComponent.find('input#firstname').simulate('change', {
      persist: noop,
      target: {
        id: 'firstname',
        value: 'toti@example.net',
      },
    });
    renderedComponent.find('input#firstname').simulate('blur', {
      persist: noop,
      target: {
        id: 'firstname',
      },
    });


    userInnerform.find('form').simulate('submit', jest.fn());

    return new Promise((resolve) => setImmediate(resolve)).then(() => {
      expect(patchUserPromise).toBeCalled();

      //this expect doesn't work
      expect(fetchUserPromise).toBeCalled();
    });
  });

А вот и моя ручка отправить:

  handleSubmit: (values, bag) => {
    const {props, setSubmitting} = bag;
    const {userId} = props;
    const patchPromise =
      props.loggedUserEmail === values.email
        ? props.patchAdminPromise
        : props.patchUserPromise;
    const submittedValues = cleanSubmitDatas(values, props.user);


    return patchPromise({userId, values: submittedValues})
      .then((res) => props.fetchUserPromise({userId, values}))
      .then((res) => {
        setSubmitting(false);
        toast.success(<FormattedMessage id="form.savedSuccesfully" />, {
          autoClose: 5000,
        });
      })

Я пока не очень хорошо знаю, как использовать Jest или Enzyme, я новичок в тестах React. Для меня есть проблема с .then, мой тест не может найти мою фиктивную функцию или мои тесты просто плохие! Я заблудился с обещаниями испытаний!

Спасибо за ваши ответы =)!

...