如何使用 Jest testPathIgnorePatterns(React、Jest、Regex)忽略文件名约定
Posted
技术标签:
【中文标题】如何使用 Jest testPathIgnorePatterns(React、Jest、Regex)忽略文件名约定【英文标题】:How to ignore filename convention with Jest testPathIgnorePatterns (React, Jest, Regex) 【发布时间】:2020-04-03 23:55:56 【问题描述】:我试图建立一个约定来忽略任何遵循模式的测试。如果你想在 npm 测试期间忽略它,文件名看起来像这样。
DISABLED.MyComponent.test.js
尝试使用 testPathIgnorePatterns
testPathIgnorePatterns: ['<rootDir>/src/**/DISABLED.*.js'],
错误是它仍在运行,或者抛出正则表达式无效的错误。
【问题讨论】:
顾名思义,此属性仅用于忽略路径 @Teneff 对使用不同的属性有何建议? 【参考方案1】:testPathIgnorePatterns
是一个正则表达式模式数组,它忽略与列出的表达式匹配的任何 路径,并且还应包含默认的 "/node_modules/"
。虽然不打算这样做,但您也可以使用 testPathIgnorePatterns 来排除特定文件:
因此,您最好的选择是将忽略的测试移动到单独的文件夹中,例如
"jest":
"testPathIgnorePatterns": [
"/node_modules/",
"<rootDir>/ignore/this/path/"
]
【讨论】:
谢谢,这很有道理,但不太适合我的用例。不过我会记住的。真的希望我可以根据某种命名约定禁用,但这将是我的备用计划。 我不确定您所说的“它不会帮助您忽略特定文件”是什么意思。testPathIgnorePatterns
考虑完整路径包括文件名。
@rinogo 我也不确定。这已经有一段时间。我想我删除那句话,因为它具有误导性。谢谢。【参考方案2】:
Jest 使用glob patterns 来匹配测试文件,因此在the testMatch
configuration 中的默认条目前面加上!(DISABLED.)
就可以了。
package.json
// ... rest of the package
"jest":
"testMatch": [
"**/__tests__/**/!(DISABLED.)*.[jt]s?(x)",
"**/!(DISABLED.)?(*.)+(spec|test).[tj]s?(x)"
]
旁注:您还可以通过将主 describe
块重命名为 xdescribe
或 describe.skip
来“禁用”测试文件,这样可以显示有跳过的测试而不是完全忽略文件
Test Suites: 1 skipped, 11 passed, 11 of 12 total
Tests: 2 skipped, 112 passed, 114 total
【讨论】:
禁用语法仍然不适用于这些 glob,但我更喜欢你的旁注,可见性很重要。谢谢@Teneff【参考方案3】:这里的其他答案很有帮助,但错过了核心事实:
testPathIgnorePatterns
可以用于忽略您的文件名。问题是 testPathIgnorePatterns
takes a RegExp,而不是您指定的 glob。
testPathIgnorePatterns
的默认设置是 "/node_modules/"
,因此包含它可能也很有用。
例如,要忽略具有“e2e-”前缀的端到端测试,您可以使用:
"testPathIgnorePatterns": [
"/node_modules/",
"/e2e-"
]
在您的具体情况下,这将类似于以下内容(注意.
在/DISABLED\.
中是如何转义的):
"testPathIgnorePatterns": [
"/node_modules/",
"/DISABLED\."
]
【讨论】:
以上是关于如何使用 Jest testPathIgnorePatterns(React、Jest、Regex)忽略文件名约定的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Jest testPathIgnorePatterns(React、Jest、Regex)忽略文件名约定