Я пытаюсь создать тестовый пример для асинхронного c действия в React-redux с помощью Jest, я получаю эту ошибку при запуске моего теста
TypeError: Cannot read property 'catch 'of undefined
Я вижу похожие вопросы с той же ошибкой, но, потратив некоторое время, я все еще не могу понять, в чем проблема в моем коде, я буду признателен за любую помощь или предложение.
Спасибо!
My Action
let axios = getAxiosInstance();
export const sendFileToServer = values => {
const serviceUrl = `/api/submitfile`;
return dispatch => {
const formData = new FormData();
Object.keys(values).forEach(key => formData.append(key, values[key]));
axios
.post(serviceUrl, formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
.then(response => {
dispatch({type: SUCCESSFUL, payload: response.data});
})
.catch(error => {
if (error.response === undefined) {
dispatch({type: TIMEOUT, payload: error.data});
} else {
dispatch({type: UPLOAD_FAILURE, payload: error.data});
}
});
};
};
My Test
const middlewares = [thunk];
const mockStore = configureMockStore(middlewares);
const values = [{
name: "test.csv",
size: 137,
type: "application/vnd.ms-excel",
}]
describe('sendFileToServer', () => {
let store;
beforeEach(() => {
store = mockStore();
jest.setTimeout(10000);
mockAxios.post.mockReset();
mockAxios.get.mockReset();
});
const mockSendFileWithErrorResponse = {
response: {
status: 500,
data: {
code: '500',
message: 'Internal Server Error'
}
}
};
it('should use axios to make a post request and get 500 error', () => {
mockAxios.post.mockResolvedValueOnce(mockSendFileWithErrorResponse);
const expectedActions = [{type: TIMEOUT, payload: values}];
return store.dispatch(sendFileToServer(values)).catch(() => {
expect(mockAxios.post).toHaveBeenCalledTimes(1);
expect(mockAxios.post).toHaveBeenCalledWith(
`/api/submitfile`,
values
);
expect(store.getActions()).toEqual(expectedActions);
});
});
});