У меня есть функция, которая извлекает данные из бэкэнда.Когда выборка успешна, она извлекает одно значение из ответа, а затем вызывает другую функцию (parseAllRecordsData), которая преобразует значение в другое значение.Я пытаюсь протестировать эту функцию, но после насмешки над функцией parseAllRecordsData она все еще пытается вызвать оригинальную функцию (и выдает ошибки из этой функции).
В других тестах jest.fn или jest.spy работают правильно, но когда я пытаюсь смоделировать функцию, которая используется в «then», это не так.
export function fetchAllRecordsData(payload) {
const url = `/apis/${payload.link.split('apis/')[1]}`;
return axios.get(url)
.then(({ data }) => {
if (data && data._embedded) {
const parsedData = data._embedded['taxonomies:entry'];
const arrayData = parseAllRecordsData(parsedData, payload);
return { data: List(arrayData) };
}
return { data: List([]) };
})
.catch((error) => ({ error }));
}
И мой тест:
describe('fetchAllRecordsData', () => {
const mockedPayload = {
link: 'apis/ok_link',
};
beforeAll(() => {
jest.spyOn(LegalListRecordsApi,'parseAllRecordsData').mockReturnValue(['test']);
});
it('test', async () => {
const test = await LegalListRecordsApi.fetchAllRecordsData(mockedPayload);
expect(test).toEqual(1);
});
});
Когда он вызывается так, parseAllRecordsData вызывает реальную функцию и выдает ошибку, потому что у поддельного ответа Axios нет некоторых значений, которые анализируютсяиспользование функции.Меня интересует только возвращаемое значение, а не вызов этой функции.