Я пытаюсь проверить обещание в. Затем от 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, мой тест не может найти мою фиктивную функцию или мои тесты просто плохие! Я заблудился с обещаниями испытаний!
Спасибо за ваши ответы =)!