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)
функция не сработала
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
.