VS Code Jest扩展可运行全部测试但无法识别单个测试
下面是社区里常见的排查和修复方案,亲测有效:
检查扩展的测试路径匹配规则
打开VS Code设置(Ctrl+,),搜索Jest: Test Path Pattern,确保值是CRA默认的**/*.test.{ts,tsx,js,jsx}(根据项目语言调整后缀)。如果之前自定义过这个配置,先改回默认试试,很多时候是匹配规则太严格导致单个文件不命中。确认CRA的Jest配置未被破坏
打开项目的package.json查看jest字段,或是jest.config.js(如果执行过eject或用了react-app-rewired),重点检查testMatch/testRegex配置:
CRA默认的testMatch配置为:"testMatch": [ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[tj]s?(x)" ]若你自定义了
testRegex,避免写得过于局限,比如不要把路径严格限制在某个文件夹内,导致单个测试文件的路径无法被匹配。清除扩展缓存
按Ctrl+Shift+P(Mac用Cmd+Shift+P)打开命令面板,搜索Jest: Clear Cache并执行,之后重启VS Code。扩展缓存偶尔会出现异常,导致路径识别错误。核对测试文件的命名与位置
尽管日志显示路径存在,仍需确认:测试文件名是否符合CRA规范(如.test.js/.spec.js结尾,或放在__tests__文件夹下);文件是否被jest.config.js中的roots配置排除在外。升级扩展与Jest版本
旧版本的Jest扩展可能存在已知bug,去VS Code扩展市场将其更新到最新版。另外检查项目内的Jest版本,CRA自带的版本通常没问题,但如果手动升级过,需确保和扩展版本兼容。用命令行验证问题根源
在终端执行npx jest <测试文件路径>,比如npx jest src/components/Button.test.js。如果命令行能正常运行测试,说明是VS Code Jest扩展的问题,可尝试卸载重装扩展;如果命令行也报错,则是Jest配置的问题,回到前面的配置排查步骤。
内容的提问来源于stack exchange,提问作者CJH

