TypeError: невозможно прочитать свойство catch для undefined в тестовом примере реакции с Jest - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь создать тестовый пример для асинхронного 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);
        });
    });


});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...