Why TypeError: axios.create is not a function? When testing axios GET

Adding this here since it's the first hit on google to the question and the answer selected doesn't really answer the question.

This problem typically happens when you are already mocking axios (very likely within a __mocks__ folder.

With jest, you can explicitly unmock, then call this axios-mock-adapter.

jest.unmock('axios');
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
...

axios-mock-adapter gives nice, flexible apis when working with external requests. However it doesn't globally prevent your app from making external calls that can be triggered by a test in a different component.

So I found both using axios-mock-adapter and doing a manual mock in the __mocks__ folder equally helpful.


Are you mocking axios already? I have run into this issue myself, and after looking in all the wrong places, I realized I was already mocking axios with jest.

Put the following snippet in your setupTestFrameworkScriptFile:

const mockNoop = () => new Promise(() => {});

// Notice how `create` was not being mocked here...
jest.mock('axios', () => ({
  default: mockNoop,
  get: mockNoop,
  post: mockNoop,
  put: mockNoop,
  delete: mockNoop,
  patch: mockNoop
}));

While you might be able to do both, if you are using the axios-mock-adapter, you might want to remove your other mocks (and skip the snippet above).