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

如何为jest-circus模块Mock testTimeout以解决TypeError报错?

Jest 29 快照测试报错:TypeError: Cannot read properties of undefined (reading 'testTimeout') 解决方法

报错信息

FAIL  src/components/post/piece/Itemdetail.test.js
  ● Test suite failed to run

    TypeError: Cannot read properties of undefined (reading 'testTimeout')

      at _callCircusHook (node_modules/jest-circus/build/run.js:237:57)

报错根源是jest-circus模块中_state.getState()返回了undefined,导致代码尝试读取testTimeout属性时抛出异常。

解决方法:Mock jest-circus的state模块

方案一:单个测试文件中局部Mock

在你的测试文件(Itemdetail.test.js)顶部添加以下代码,直接Mockjest-circus的state模块:

jest.mock('jest-circus/build/state', () => ({
  getState: () => ({
    testTimeout: 5000 // 设置合理的超时时间,比如默认5000ms
  })
}));

这段代码会覆盖原模块的getState方法,让它返回包含testTimeout属性的对象,避免读取undefined的属性。

方案二:全局Mock(适用于多个测试文件报错的情况)

如果多个测试文件都遇到这个问题,可以在Jest配置中设置全局Mock:

  1. 修改jest.config.js,添加setupFilesAfterEnv配置:
// jest.config.js
module.exports = {
  // 其他已有配置
  setupFilesAfterEnv: ['./jest.setup.js']
};
  1. 在项目根目录创建jest.setup.js文件,写入全局Mock代码:
// jest.setup.js
jest.mock('jest-circus/build/state', () => ({
  getState: () => ({
    testTimeout: 5000
  })
}));

注意事项

如果你的测试逻辑依赖jest-circus state模块的其他属性,可以在getState的返回对象中补充对应字段,确保测试环境的完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:50:40