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

React Native项目Jest测试报WalletLib.WalletClient不是构造函数如何解决

Jest 自定义SDK mock报错解决方案

错误根源

你的mock导出结构与真实SDK的导出结构不匹配:

  • 真实运行场景下import * as WalletLib from 'wallet-lib'得到的WalletLib对象下直接挂载WalletClient构造函数
  • 你编写的mock在模块导出对象下额外加了一层WalletLib属性,导致实际访问WalletLib.WalletClient时拿到的是undefined,触发「不是构造函数」的报错

修复方案

将mock调整为和真实SDK一致的导出结构即可:

jest.mock('wallet-lib', () => {
  return {
    // 直接在模块根导出下挂载WalletClient构造函数
    WalletClient: jest.fn().mockImplementation(() => {
      // 若WalletClient实例有要调用的方法,可在这里补充对应mock,示例:
      // getBalance: jest.fn().mockResolvedValue(100),
      // signTransaction: jest.fn().mockResolvedValue('mock_transaction_hash')
      return {}
    })
    // 如果SDK还有其他导出属性/方法,按真实结构在这里补充即可
  }
})

额外注意事项

  • 如果多个测试文件都用到了这个SDK,可以把这段mock代码放到项目的jest全局配置文件(通常是jest.setup.js)里,避免每个测试文件重复编写
  • 确保mock代码的执行顺序早于业务代码对wallet-lib的导入,一般把jest.mock写在测试文件所有import语句之前即可生效

内容的提问来源于stack exchange,提问作者Muhammad Afaq Raiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:48:02