Я включил асинхронную проверку для поля в моей форме редукса.Я использую шутку и фермент, чтобы проверить представление формы.
Я попытался смоделировать функцию проверки асинхронности с простым разрешенным обещанием, форма все еще не может быть отправлена.Но я удалил асинхронную проверку, форма может быть отправлена без каких-либо проблем.
...
jest.mock('../../../../../../utilities/validators');
it('should set registration info and set current step with correct values when registration form is successfully submitted', () => {
const store = createStore(
combineReducers({
form: formReducer,
}),
);
validateEmailUnique.mockImplementation(() => Promise.resolve());
const mockOnSetRegistrationInfo = jest.fn();
const mockOnSetRegistrationCurrentStep = jest.fn();
const updatedProps = {
...defaultProps,
onSetRegistrationInfo: mockOnSetRegistrationInfo,
onSetRegistrationCurrentStep: mockOnSetRegistrationCurrentStep,
};
const wrapper = mount(
<Provider store={store}>
<StepOne {...updatedProps} />
</Provider>,
);
const form = wrapper.find('form');
const businessEmailTextField = wrapper.find(
'input#business-email-text-field',
);
businessEmailTextField.simulate('change', {
target: {
value: 'business@email.com',
},
});
form.simulate('submit');
expect(mockOnSetRegistrationInfo).toHaveBeenCalled();
Я ожидаю, что форма будет отправлена, а затем будет вызвана функция onSetRegistrationInfo, которая находится внутри отправленной формы функции обратного вызова.Однако, поскольку асинхронная проверка не пройдена, форму нельзя отправить во время теста.