Ich versuche, meine MapDispatchToProps Funktion zu testen, wenn eine asynchrone Funktion ausgelöst wird. Ich habe die Vorschläge von Dan Abramov gelesen, wie man mapDispatchToProps testet, und ich versuche, meinen Code als solchen zu testen.Test mapDispatchToProps async Aktionen
ich die Störung erhalte ...
TypeError: Cannot read property 'then' of undefined
Hier ist mein Test ...
describe("mapDispatchToProps",() => {
const dispatchSpy = jest.fn();
const {signupUser} = mapDispatchToProps(dispatchSpy);
it("should dispatch signupActions.signupUser()",() => {
// mockAxios.onPost(endpoints.SIGNUP,{})
// .reply(200,'test_success');
// tried with and without mockAxios
signupUser({})
const spyLastCall = dispatchSpy.mock.calls[0][0];
expect(spyLastCall)
.toEqual(signupActions.signupUser({}));
})
})
Die Funktion, die ich testen wollen ...
export const mapDispatchToProps = dispatch => {
return { signupUser: (user) => {
dispatch(signupActions.signupUser(user))
.then((response) => {
// do something on success
}, (error) => {
// do something on failure
})
}
}
Ich habe signupActions.signupUser bereits getestet und weiß, dass es ein Versprechen zurückgibt. Hier ist der Code ...
export function signupUser(user) {
return (dispatch) => {
return dispatch(rest.post(SIGNUP,user))
.then((response) => {
return Promise.resolve(response);
},(error) => {
return Promise.reject(error)
}
)
}}
Was mache ich falsch?
Ps: Ich habe auch versucht:
const dispatchSpy = jest.fn().mockImplementation(() => {
return p = new Promise((reject,resolve) => {
resolve({})
})
}
mit dem gleichen Ergebnis
Nur eine Vermutung, müssen Sie möglicherweise die geschweiften Klammern in Ihrem 'mapToDispatch', dh zurückzukehren oder zu entfernen:' Rückversand (signupActions.signupUser (Benutzer)) ' –
Der Code gut läuft, so denke ich, dass die geschweiften Klammern sind Arbeiten. Es sind nur die Tests, mit denen ich Probleme habe – user1795370