Тестирование действия async redux в случае сбоя
Я проверил в случае успеха. Но у меня проблемы с случаем отказа.
Это мое действие
const register = (user) => async (dispatch) => {
try {
dispatch(registerRequest());
const response = await userService.register(user);
dispatch(registerSuccess(response.data));
history.push("/");
} catch (err) {
dispatch(registerFailure());
dispatch(errorActions.setErrors(err));
}
};
Сервисный файл
const register = async (user) => {
const response = await axios.post(`${API_AUTH}/register`, user);
return response;
};
Мой тестовый файл выглядит как показано ниже. У меня также есть пользовательская служба, которую я называю вызовом api. Я использую сервис в своих действиях
describe("async actions", () => {
const user = {
name: "ogulcan133",
password: "133131",
email: "kara@gmail.com",
};
let response;
beforeEach(() => {
moxios.install();
});
afterEach(() => {
moxios.uninstall();
});
it("creates registerRequest and registerFailure when user register has been done with fail", () => {
response = new Error("Request failed with status code 500");
const store = makeMockStore();
const expectedActions = [
authActions.registerRequest(),
authActions.registerFailure(),
errorActions.setErrors(response),
];
moxios.wait(() => {
const request = moxios.requests.mostRecent();
request.respondWith({
status: 500,
response: response,
});
});
return store.dispatch(authActions.register(user)).then(() => {
// return of async actions
expect(store.getActions()).toEqual(expectedActions);
});
});
});
Мои результаты тестов похожи на
- Expected
+ Received
@@ -4,9 +4,69 @@
},
Object {
"type": "REGISTER_FAILURE",
},
Object {
- "payload": Request failed with status code 500,
+ "payload": Response {
+ "code": undefined,
+ "config": Object {
+ "adapter": [Function mockAdapter],
+ "data": "{\"name\":\"ogulcan133\",\"password\":\"133131\",\"email\":\"kara@gmail.com\"}",
+ "headers": Object {
+ "Accept": "application/json, text/plain, */*",
+ "Content-Type": "application/json;charset=utf-8",
+ },
+ ... // the error continue
Какой линейный код нужно изменить? или что именно я должен делать по этому поводу. Спасибо за помощь