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

React测试中Jest Mock返回Promise类方法报Apis未定义

报错原因

抛出Apis is undefined是因为mock写法存在两个核心问题:

  • jest.mock的工厂函数没有正确返回导出对象:箭头函数后直接跟大括号会被解析为函数代码块,而非要返回的对象字面量,函数没有任何返回值
  • mock返回的内容和原模块结构不匹配:原模块是ES Module具名导出Apis类,mock逻辑里根本没有提供这个导出,组件执行new Apis()时自然拿不到对应构造函数。
修复方案

修改测试文件的mock逻辑,让工厂函数返回和原模块导出结构完全匹配的内容,具名导出Mock版的Apis类,类上挂载mock实现的getList方法即可:

// example.component.test.js
jest.mock('../misc/apis', () => {
  return {
    Apis: class {
      getList = jest.fn(() => Promise.resolve([{ "item": "3" }, { "item": "4" }]))
    }
  }
})

// 后续正常编写测试用例即可,比如渲染App组件、断言列表渲染的内容为mock返回的3、4

补充说明:你提供的原始apis.js文件本身存在几处语法错误,正式运行非测试环境代码时也会报错:console.log的入参字符串未加引号、promise.resolve的Promise首字母未大写、类内方法定义语法错误,这些和本次mock报错无关,需要单独修正。

内容的提问来源于stack exchange,提问作者ajay kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:18:28