Ich schreibe einige Tests in Karma für reagieren/redux und ich kann nicht scheinen, diesen Fehler zu beheben. Jedes Mal, wenn ein Test ausgeführt wird, läuft er durch die Aktion, sendet den korrekten Wert an den Reduzierer, aber ich erhalte immer eine Antwortrückgabe von undefiniert. Wir Konsole alle Werte bis die Aktualisierung des Status wird protokolliert, aber sobald diese Zeile ausführt:Karma Tests undefined Versprechen in Redux
dispatch(duck.addLabRequest(newLab.toJS())).then(() => {
wir eine .then undefinierter bekommen. Was könnte die Ursache dafür sein?
Fehler
PhantomJS 2.1.1 (Mac OS X 0.0.0) creating a new lab sends the body of the form in the request FAILED
undefined is not an object (evaluating 'promise.then')
-Test
describe('creating a new lab',() => {
let promise;
beforeEach(() => {
let mockAdapter = new MockAdapter(axios);
mockAdapter.onPost(labsURL).reply(201, {
lab: newLabWithID,
message: "Lab created successfully"
});
dispatch(duck.addLabRequest(newLab.toJS())).then(() => {
expect(1).to.equal(2);
})
})
})
Aktion
export function addLabRequest(lab) {
console.log("lab is: ")
console.log(JSON.stringify(lab));
return (dispatch) => {
axios.post(`${API_URL}/Labs`, lab, {
headers: {'Content-Type': 'application/json'}
})
.then((resData) => {
console.log("WE GOT HERE");
console.log(JSON.stringify(resData))
dispatch(addLab(resData))
})
.catch((err) => {
console.log(err.response.data.message);
});
}
}
. . .
Reducer
case ADD_LAB:
console.log("ADDING LAB");
console.log(JSON.stringify(action.payload));
return state.update(
'labs',
(labs) => labs.push(Immutable.fromJS(action.payload))
);
Ich glaube, Sie auch auch in der 'dispatcher' zurückkehren:' return axios.post (..) 'und ist eine gute Praxis um auch den letzten 'dispatch' innerhalb des' then ((resData) ...) 'zurückzugeben. – caisah
@caisah ok, das hat jetzt funktioniert! Sende eine Antwort und ich akzeptiere sie. –