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

如何从Jest忽略路径中单独运行指定测试用例?

如何在Jest中排除整个目录但单独运行其中某个测试文件?

我的项目结构如下:

src
 - foo
   - test A
   - test B
   - test C
 - bar 
   ...

之前通过如下配置忽略了src/foo/下的所有测试用例:

testPathIgnorePatterns: ['src/foo/'],

现在需要单独运行src/foo/test B,但尝试了以下两种配置都无效:

无效配置1

testMatch: [
  '**/*.test.{ts,tsx,js,jsx}',
  'src/foo/test B',
],

testPathIgnorePatterns: ['src/foo/'],

无效配置2

testMatch: [
  '**/*.test.{ts,tsx,js,jsx}',
  '!src/foo/**/*',
  'src/foo/test B',
],

解决方法

方法1:修改testPathIgnorePatterns正则,精准排除

Jest中testPathIgnorePatterns的优先级高于testMatch,只要路径被前者匹配就会直接忽略。我们可以用负向前瞻正则,让testPathIgnorePatterns排除src/foo/下除了test B之外的所有文件:

testPathIgnorePatterns: [
  'src/foo/(?!test B).*'
],
testMatch: [
  '**/*.test.{ts,tsx,js,jsx}'
]

正则解释:(?!test B)是负向前瞻断言,表示匹配src/foo/后**不紧跟test B**的所有路径,这样会跳过test A和test C,只保留test B。

方法2:命令行直接指定测试文件(临时场景更高效)

如果只是临时需要运行这个测试,无需修改配置文件,直接在命令行执行:

# 转义空格
npx jest src/foo/test\ B

# 或用引号包裹路径
npx jest "src/foo/test B"

为什么之前的配置无效?

  1. 第一种配置中,testPathIgnorePatterns已经把整个src/foo/目录纳入忽略列表,testMatch里的路径会被这个更高优先级的规则覆盖,test B依然不会被执行。
  2. 第二种配置的testMatch规则顺序错误:Jest按从上到下的顺序匹配规则,!src/foo/**/*先排除了整个foo目录,后面的src/foo/test B无法覆盖前面的排除规则,一旦路径被排除,就不会再被后续的包含规则匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:25:09