PhpStorm不原生支持Jest,必须手动配置:需存在jest.config.js/ts或package.json含"test": "jest";Jest package路径须设为本地相对路径(npm/yarn用node_modules/.bin/jest,pnpm用node_modules/jest/bin/jest.js);配置后必须重启IDE才生效。

PhpStorm 不原生支持 Jest,必须手动配置运行/调试配置才能触发测试执行——哪怕你项目里 jest 装得再全,没配对 Jest package 路径或 working directory,右键菜单里就不会出现 “Run Jest” 选项。
为什么 PhpStorm 右键测试文件没“Run Jest”?
这不是插件没开、也不是 Node.js 没装,而是 PhpStorm 根本不扫描 node_modules 去自动发现 Jest。它只认两个显式凭证:
-
jest.config.js或jest.config.ts文件必须存在于项目根目录(不是子目录); - 若无配置文件,则
package.json中必须有"test": "jest"这类脚本(值里带参数如"jest --coverage"也行); - 两者都缺时,PhpStorm 会 fallback 到默认行为,但此时无法加载
setupFilesAfterEnv、transform等自定义配置,导致测试文件 import 失败且不报错——你只会看到“0 tests found”。
Jest package 路径填错就报 “Cannot find module 'jest-cli'”
这个错误 90% 是因为填了全局路径,比如 /usr/local/bin/jest 或 C:\Users\...\jest.cmd。PhpStorm 的 Jest package 字段必须指向项目本地的可执行入口:
- npm/yarn 项目:填
node_modules/.bin/jest(注意是相对路径,不是绝对路径); - pnpm 项目:
node_modules/.bin/jest往往是坏符号链接,应改用node_modules/jest/bin/jest.js; - 千万别勾选“Use global Jest”,也别手输全局路径;
- 改完后必须重启 PhpStorm 才生效——改完不重启,配置等于没改。
单个 it 运行慢或超时,不是 IDE 卡,是 Jest 默认行为
右键某个 it 运行耗时 20 秒以上,大概率是 Jest 在启动时扫描全项目匹配 testMatch 模式,而不是 PhpStorm 响应慢:
基于三引擎设计,从微信文章、新闻和博客网页提取干净内容,支持标题作者日期元数据,多格式和批量处理。
立即学习“PHP免费学习笔记(深入)”;
- 在
jest.config.js中显式缩小范围,例如:testMatch: ['<rootdir>/src/**/*test.{js,ts}']; - 异步测试报
Timeout - Async callback was not invoked,优先检查是否漏了done()、return Promise或await写错位置; - PhpStorm 的 “Run” 是全新进程,不继承终端中
jest --watch的缓存和 mock 状态——别指望终端跑通了,IDE 就一定行。
覆盖率没输出?先确认 coverageDirectory 是否可写
点 “Run with Coverage” 没反应或报权限错误,多数卡在 Jest 写入阶段:
- 检查
coverageDirectory配置路径(如coverage)是否被 Git 忽略但实际不可写(比如父目录权限受限); - 确保该路径不存在同名文件(例如有个叫
coverage的普通文件而非目录,Jest 会写失败); - Windows 下如果路径含中文或空格,偶尔触发 Node.js fs 模块异常,建议用纯英文路径;
- PhpStorm 的覆盖率报告依赖 Jest 自身生成,IDE 只负责展示——生成失败,IDE 就没东西可展。
最常被忽略的是配置变更后不重启 PhpStorm,以及 pnpm 项目硬套 npm 的 node_modules/.bin/jest 路径。这两个点踩中任意一个,Jest 就只是“看起来装好了”。

















