Values ββin the onSubmit handler are always an empty object. How to pass some values ββso that I can test append?
Test:
const store = createStore(combineReducers({ form: formReducer })); const setup = (newProps) => { const props = { ...newProps, }; expect.spyOn(store, 'dispatch'); const wrapper = mount( <Provider store={store}> <RegisterFormContainer {...props} /> </Provider>, ); return { wrapper, props, }; }; describe('RegisterFormContainer.integration', () => { let wrapper; it('should append form data', () => { ({ wrapper } = setup()); const values = { userName: 'TestUser', password: 'TestPassword', }; expect.spyOn(FormData.prototype, 'append');
Container:
const mapDispatchToProps = dispatch => ({ // values empty object onSubmit: (values) => { const formData = new FormData(); Object.keys(values).forEach((key) => { formData.append(key, values[key]); }); return dispatch(submit(formData)); }, }); export default compose( connect(null, mapDispatchToProps), reduxForm({ form: 'register', fields: ['__RequestVerificationToken'], validate: userValidation, }), )(RegisterForm);
component:
const Form = ({ error, handleSubmit }) => ( <form onSubmit={handleSubmit} action=""> <Field className={styles.input} name="username" component={FormInput} placeholder="Username" /> <button type="submit"> Register </button> </form> );
source share