Ошибка типа: (0, _axios.default) не является функцией при использовании jest.mock ('axios') внутри файла * .test.js - PullRequest
2 голосов
/ 15 мая 2019

Я пытаюсь смоделировать axios модуль внутри моего тестового файла, как этот

// mycomponent.test.js
import axios from 'axios';

jest.mock('axios', () => ({
  get: jest.fn(() => Promise.resolve({ data: 'data' })),
  default: jest.fn(() => Promise.resolve({ data: 'data' })),
}));

Но после добавления jest.mock('axios') в мой тестовый файл я получил такую ​​ошибку.

TypeError: (0 , _axios.default) is not a function

      55 |       this.props.updateGlobalLoading(true);
      56 | 
    > 57 |       axios({
         |       ^
      58 |         method: 'get',
      59 |         url: '/v1/api/portal-xml-list',
      60 |       }).then((res) => {

Итак, как мне это исправить, любую вещь, которую я пропустил, чтобы установить axios насмешку?

Спасибо!

1 Ответ

2 голосов
/ 16 мая 2019

Если вы хотите смоделировать экспорт модуля по умолчанию и именовать его (в данном случае axios), свойство __esModule должно быть включено в возвращаемом значении:

jest.mock('axios', () => ({
    __esModule: true,
    get: jest.fn(() => Promise.resolve({ data: 'data' })),
    default: jest.fn(() => Promise.resolve({ data: 'data' })),
}));

В качестве альтернативы, каккажется, что вы используете только экспорт по умолчанию axios, вы можете смоделировать экспорт по умолчанию как:

jest.mock('axios', () => jest.fn(() => Promise.resolve({ data: 'data' })));
...