You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:42:38