我创建了一个axios实例......
// api/index.js
const api = axios.create({
baseURL: '/api/',
timeout: 2500,
headers: { Accept: 'application/json' },
});
export default api;
有几个模块使用它..
// api/versions.js
import api from './api';
export function getVersions() {
return api.get('/versions');
}
我尝试测试......
// Test
import { getVersions } from './api/versions';
const versions= [{ id: 1, desc: 'v1' }, { id: 2, desc: 'v2' }];
mockAdapter.onGet('/versions').reply(200, versions);
getVersions.then((resp) => { // resp is UNDEFINED?
expect(resp.data).toEqual(versions);
done();
});
为什么resp未定义?
答案 0 :(得分:3)
在这里尝试两件事:
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
const mockAdapter = new MockAdapter(axios);
// api/index.js
const api = {
get(path) {
return axios.get('/api' + path)
.then((response) => {
return response.data;
});
}
}
export default api;
答案 1 :(得分:0)
根据James M.的建议,我更新了我的api / index.js,而没有使用axios.create ......
<强> API / index.js 强>
import http from 'axios'
export default {
fetchShoppingLists: () => {
console.log('API FETCH SHOPPINGLISTS')
return http
.get('http://localhost:3000/shoppinglists')
.then(response => {
return response
})
.catch(error => {
console.log('FETCH ERROR: ', error)
})
}
}
答案 2 :(得分:0)
您不需要axios-mock-adapter
。这是我嘲笑我的axios
的方式:
// src/__mocks__/axios.ts
const mockAxios = jest.genMockFromModule('axios')
// this is the key to fix the axios.create() undefined error!
mockAxios.create = jest.fn(() => mockAxios)
export default mockAxios
答案 3 :(得分:0)
对于任何仍在为此苦苦挣扎的人。
您需要确保在测试主体之外初始化您的 MockAdapter
。
即。 ❌ 不正确 ❌
it('should do a thing', () => {
const mockAdapter = new MockAdapter(axios);
})
✅ 正确 ✅
const mockAdapter = new MockAdapter(axios);
it('should pass' () => {})