Создан блок юнит-тестов с использованием подхода Axios Mock и смотрите ошибки консоли ниже. Перепробовал много подходов, но ни один не решил проблему. Очень плохо знакомы с сообществом REACT / JEST, но стараются решить эту проблему наилучшим образом.
Ожидание:
- Все тестовые сценарии, включая успешные, сценарии ошибок должны составлять 100%покрыты и должны пройти без предупреждений / ошибок.
- Ответ должен быть проверен с пустым списком результатов, а также с непустым списком результатов.
- Сценарии ошибок из-за тайм-аута / сети также должны бытьобработано.
Ошибки:
Expected: undefined
Received: {"results": []}
(node:76675) UnhandledPromiseRejectionWarning:
Unhandled promise rejection. This error originated
either by throwing inside of an async function without a catch block,
or by rejecting a promise which was not handled with .catch().
(rejection id: 1)
(node:76675) [DEP0018] DeprecationWarning: Unhandled promise rejections
are deprecated. In the future, promise rejections that are not handled will
terminate the Node.js process with a non-zero exit code.
Что я пробовал:
index.js
export default getAreas = area => axios.get(`/test/areas/${area}`);
__ mocks __ / axios.js
const axiosMocked = {
get: jest.fn(() => Promise.resolve({ results: [] }))
};
export default axiosMocked;
__ tests __ / index.test.js
import mockAxios from 'axios';
import getAreas from '../index';
afterEach(() => {
jest.clearAllMocks();
});
it('fetches results from api', () => {
mockAxios.get.mockImplementationOnce(() => Promise.resolve({ results: [] }));
getAreas('atl').then(response => {
expect(response).toEqual();
});
expect(mockAxios.get).toHaveBeenCalledTimes(1);
expect(mockAxios.get).toHaveBeenCalledWith('/test/areas/atl');
});