使用axios-mock-adapter模拟axios时出现mock.onGet不是函数错误
解决TypeError: mock.onGet is not a function问题
可能原因及解决方案
1. 版本不兼容
axios-mock-adapter与axios版本不匹配是核心诱因:
- axios v1.x及以上需搭配axios-mock-adapter v2.x及以上版本
- 若使用axios v0.x,需对应axios-mock-adapter v1.x版本
执行命令查看当前依赖版本:
npm ls axios axios-mock-adapter
根据版本对应关系调整依赖:
# 升级至兼容的最新版本 npm install axios@latest axios-mock-adapter@latest --save-dev
2. 修正CommonJS导入方式
部分版本的axios-mock-adapter在CommonJS环境下,默认导出需显式获取.default:
修改测试文件的导入代码:
var axios = require("axios"); // 添加.default获取默认导出 var MockAdapter = require("axios-mock-adapter").default; it("fakeAxios", async () => { var mock = new MockAdapter(axios); mock.onGet("/users").reply(200, { users: [{ id: 1, name: "John Smith" }], }); // 用await确保请求完成后再执行restore const response = await axios.get("/users"); console.log(response.data); mock.restore(); });
3. 简化Jest配置
原配置中的moduleNameMapper可能干扰axios的正常导入,尝试移除该配置并调整transformIgnorePatterns:
修改package.json中的jest配置:
{ "jest": { "transformIgnorePatterns": [ "/node_modules/(?!axios|axios-mock-adapter)" ] } }
内容的提问来源于stack exchange,提问作者vd1
相关产品推荐
相关产品推荐

