Я довольно новичок в тестировании модулей, поэтому, пожалуйста, прошу прощения за любую ненужность.Модуль Тестирование редукционной асинхронной функции с Jest
У меня есть файл api.js
, который имеет все функции вызова API для приложения. Каждая функция возвращает свое обещание. Вот как это выглядит:
api.js
const api = {
getData() {
return superagent
.get(apiUrl)
.query({
page: 1,
});
},
}
Сейчас подходит к асинхронным действию Redux, что я пытаюсь проверить. Это выглядит примерно так:
getDataAction.js
export function getData(){
return dispatch => {
api.getData()
.end((err, data) => {
if (err === null && data !== undefined) {
console.log(data);
} else if (typeof err.status !== 'undefined') {
throw new Error(`${err.status} Server response failed.`);
}
});
}
}
Теперь в тестовом файле, я попытался это:
getDataAction.test.js
jest.mock('api.js');
describe('getData Action',() => {
it('gets the data',() => {
expect(store.dispatch(getData())).toEqual(expectedAction);
});
});
Это порождает ошибку:
TypeError: Cannot read property 'end' of undefined
Что я делаю неправильно? Теперь я могу mock api.js с автозагрузчиком по умолчанию Jest, но как мне обрабатывать случай работы функции обратного вызова с end
? Большое спасибо за любую помощь!