Moxios - TypeError: Невозможно прочитать свойство 'adapter' из неопределенного

Пытаюсь проверить axios звонит и пытается moxios пакет.

"axios": "^0.16.2","moxios": "^0.4.0",

Найдено здесь: https://github.com/axios/moxios

Следуя там примеру, но мои тестовые ошибки на moxios.install() линия:

import axios from 'axios'
import moxios from 'moxios'
import sinon from 'sinon'
import { equal } from 'assert'

describe('mocking axios requests', function () {

  describe('across entire suite', function () {

    beforeEach(function () {
      // import and pass your custom axios instance to this method
      moxios.install()
    })

Мой реальный тест

import axios from 'axios';
import moxios from 'moxios';
import sinon from 'sinon';
import { equal } from 'assert';

const akamaiData = {
  name: 'akamai'
};

describe('mocking axios requests', () => {
  describe('across entire suite', () => {
    beforeEach(() => {
      // import and pass your custom axios instance to this method
      moxios.install();
    });

    afterEach(() => {
      // import and pass your custom axios instance to this method
      moxios.uninstall();
    });

    it('should stub requests', (done) => {
      moxios.stubRequest('/akamai', {
        status: 200,
        response: {
          name: 'akamai'
        }
      });

      // const onFulfilled = sinon.spy();
      // axios.get('/akamai').then(onFulfilled);
      //
      // moxios.wait(() => {
      //   equal(onFulfilled.getCall(0).args[0], akamaiData);
      //   done();
      // });
    });
  });
});

введите описание изображения здесь

Я нашел этот закрытый вопрос здесь, однако исправление "прохождение" axios в moxios.install(axios) функция не сработала

https://github.com/axios/moxios/issues/15

3 ответа

Решение

Оказывается, мне не нужно moxiosв моем тесте я не хотел делать реальный вызов API... просто нужно было убедиться, что функция была вызвана. Исправлено с помощью функции теста.

import { makeRequest } from 'utils/services';
import { getImages } from './akamai';

global.console = { error: jest.fn() };

jest.mock('utils/services', () => ({
  makeRequest: jest.fn(() => Promise.resolve({ data: { foo: 'bar' } }))
}));

describe('Akamai getImages', () => {
  it('should make a request when we get images', () => {
    getImages();
    expect(makeRequest).toHaveBeenCalledWith('/akamai', 'GET');
  });
});

У меня была такая же проблема. Оказалось, у меня был axios.js файл в моем __mocks__ папка (остаток от другой попытки насмешки). Этот фиктивный файл взял на себя реальный код аксиоса, но для корректной работы moxios нужен реальный код аксиоса. Когда я удалил axios.js файл из __mocks__ папка, moxios работал как рекламируется.

Для меня это было о взаимодействии модуля ES. Попробуйте один из двух обходных путей:

  • Попробуйте изменитьimport moxios from 'moxios'кimport * as moxios from 'moxios'.
  • НаборesModuleInteropкtrueвtsconfig.json.
Другие вопросы по тегам