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

运行测试时出现TypeError: jest.mock is not a function错误如何解决

TypeError: jest.mock is not a function 报错解决方案

核心原因

jest.mock 是Jest测试框架专属的全局API,出现该报错的本质是当前测试运行环境未正确注入Jest全局变量,常见触发场景如下:

  • 测试运行器不是Jest,使用了Vitest、Mocha等不内置jest全局对象的测试框架
  • Jest配置中关闭了全局变量注入
  • 项目未正确安装Jest相关依赖包

解决步骤

1. 确认测试运行器类型

  • 若使用Vitest作为测试运行器:将代码中所有jest.mock替换为vi.mock,可在vite配置中开启test.global = true注入vi全局对象,或在测试文件顶部手动导入import { vi } from 'vitest'
  • 若确实需要使用Jest:确认package.json的测试脚本是调用jest执行测试,而非其他测试工具

2. 修正Jest配置

打开Jest配置文件(jest.config.js/jest.config.ts/package.json的jest字段),确认injectGlobals配置为true:

module.exports = {
  // 其他配置...
  injectGlobals: true
}

如果需要保持injectGlobals: false,则需要在每个测试文件顶部手动导入jest对象:

import { jest } from '@jest/globals'

3. 重装依赖

执行以下命令重装Jest相关依赖,避免依赖缺失或损坏:

npm install jest @types/jest ts-jest --save-dev

依赖安装完成后重启测试服务即可。

4. 测试代码逻辑修正

你提供的测试代码中存在重复调用render的问题:全局定义的第二个beforeEach会在每个测试用例执行前先调用一次render触发接口请求,测试用例内部又调用了一次render,会导致getUsers调用次数不符合预期,建议删除全局的第二个beforeEach,调整后测试逻辑即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:30:02