Have created unit test cases using axios mock approach and do see below console errors. Have tried many approaches but none resolved the problem. Very new to REACT/JEST community, but trying best to resolve this.
Expectation:
- All test cases including success, error scenarios should be 100% covered and should pass with no warnings/errors.
- Response should be tested with empty results list and as well with non-empty results list.
- Error scenarios due to timeout/network should also be handled.
Errors:
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.
What I tried:
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');
});