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

升级Jest到27.2.5后测试失败提示result.message is not a function如何解决

问题根因

该报错由jest-chain@1.1.5与Jest v27+的版本不兼容导致:
Jest v27对断言内核做了破坏性变更,匹配器执行失败后返回的result.message属性从原先的可执行函数类型,调整为直接返回错误文本的字符串类型。而jest-chain@1.1.5的内部逻辑仍尝试将result.message作为函数调用,因此触发了result.message is not a function的类型错误。

修复方案

你可以任选以下任意一种方案解决问题:

方案1:升级jest-chain到兼容版本(最推荐)

jest-chain从v1.1.6版本开始已经适配了Jest v27+的结构,直接升级依赖即可:

# yarn
yarn add jest-chain@^1.1.6 -D

# npm
npm install jest-chain@^1.1.6 -D

升级后无需修改其他配置或测试代码,即可正常使用原有链式断言能力,且报错提示会正常返回。

方案2:切换Jest测试运行器兼容旧版依赖

你项目中已经安装了jest-jasmine2运行器,只需在Jest配置中添加testRunner配置项,即可沿用旧版断言返回结构兼容旧版jest-chain:

// 在你的jest.config.js中添加如下配置
module.exports = {
  // 保留原有其他配置
  testRunner: 'jest-jasmine2'
}

方案3:移除jest-chain依赖(如果不需要链式断言能力)

如果你的测试代码中没有用到jest-chain提供的链式断言语法,可直接卸载依赖并移除引入:

  1. 卸载依赖:
# yarn
yarn remove jest-chain

# npm
npm uninstall jest-chain
  1. 删除setupTests.ts中的import 'jest-chain';引入行即可。

修改完成后重新执行测试,即可看到正常的断言失败提示,不会再抛出类型错误。


内容的提问来源于stack exchange,提问作者Maksim Shteigervald

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:09:02