सबमिशन हैंडलर में मान हमेशा एक खाली वस्तु है। मैं इसे कुछ मूल्य कैसे पास करूं ताकि मैं संलग्न करने का परीक्षण कर सकूं?Redux फॉर्म सबमिट करने के लिए मूल्यों को खाली करें
परीक्षण:
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');
// Passing values as second argument DOESN'T work, it's just an empty object
wrapper.find('form').simulate('submit', values);
Object.keys(values).forEach((key) => {
expect(FormData.prototype.append).toHaveBeenCalledWith(key, values[key]));
});
expect(store.dispatch).toHaveBeenCalledWith(submit());
});
});
कंटेनर:
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);
घटक:
const Form = ({ error, handleSubmit }) => (
<form onSubmit={handleSubmit} action="">
<Field className={styles.input} name="username" component={FormInput} placeholder="Username" />
<button type="submit">
Register
</button>
</form>
);
क्या आप वास्तविक उम्मीद खंड दिखा सकते हैं जिसका उपयोग आप परीक्षण करने के लिए करते थे यदि सही सबमिट मूल्यों के साथ 'सबमिट' कहा जाता था? – jakee
@ जेकी हो गया। मैं फॉर्मडाटा के लिए अपने जेएसडम में 'फॉर्मडाटा-पॉलीफिल' का उपयोग करता हूं अन्यथा यह अनिर्धारित होगा। –