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

Vue项目中Jest仅识别__tests__文件夹内最后一个测试文件的问题求助

解决Jest仅执行最后一个测试文件的问题

我遇到过类似的情况,结合你的项目配置和结构,咱们一步步排查解决这个问题:

1. 修正testMatch正则表达式的问题

你的jest.config.js里的第一个testMatch规则有个小问题:*.(test).{js,...}里的括号是正则分组语法,这会导致匹配逻辑异常,正确的写法应该去掉括号,或者更精准地指定__tests__目录路径,避免全局匹配可能的冲突。

修改后的testMatch可以改成这样:

testMatch: [
  '<rootDir>/__tests__/**/*.test.{js,jsx,ts,tsx}', // 精准匹配__tests__下所有.test结尾的文件
  '<rootDir>/__tests__/**/?(*.)(spec|test).{js,jsx,ts,tsx}'
],

如果还是不行,可以尝试注释掉自定义的testMatch,使用@vue/cli-plugin-unit-jest的默认配置——它已经默认包含了对__tests__目录的检测,有时候自定义规则反而会覆盖默认逻辑。

2. 清除Jest缓存

Jest的缓存机制有时候会导致文件变更不被检测到,执行以下命令清除缓存后再重新运行测试:

yarn test:unit --clearCache
# 或者直接用npx
npx jest --clearCache

3. 检查依赖版本兼容性

你使用的@vue/vue2-jest是27.0.0-alpha.2——alpha版本可能存在未知bug。建议升级到同大版本的稳定版,比如:

yarn add @vue/vue2-jest@27.0.0 --dev

确保@vue/vue2-jest的版本和jest、@vue/cli-plugin-unit-jest的版本匹配(Jest 27对应vue2-jest 27.x)。

4. 验证单个测试文件是否能被执行

先单独运行某一个未被检测到的测试文件,确认是配置问题还是文件本身的问题:

yarn test:unit __tests__/example.test.js

如果这个命令能正常执行该文件的测试,那说明是全局匹配规则的问题;如果还是不能执行,检查文件是否有语法错误(比如未闭合的括号、导入错误等)——这类错误可能导致Jest跳过文件执行。

5. 检查是否存在忽略规则

确认项目中没有.jestignore文件,或者该文件没有忽略__tests__目录下的文件;同时检查.gitignore是否意外包含了测试文件(不过这种情况很少见)。

6. 临时移除watch参数

你的package.json脚本里加了--watch=all,虽然这不应该影响首次执行,但可以先临时移除这个参数,直接运行:

yarn test:unit

看是否能检测到所有测试文件。

按照上面的步骤逐一排查,应该能解决Jest只执行最后一个测试文件的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:27:36