【问题标题】:How to ignore filename convention with Jest testPathIgnorePatterns (React, Jest, Regex)如何使用 Jest testPathIgnorePatterns(React、Jest、Regex)忽略文件名约定
【发布时间】:2020-04-03 23:55:56
【问题描述】:

我试图建立一个约定来忽略任何遵循模式的测试。如果你想在 npm 测试期间忽略它,文件名看起来像这样。

DISABLED.MyComponent.test.js

尝试使用 testPathIgnorePatterns

testPathIgnorePatterns: ['<rootDir>/src/**/DISABLED.{*}.js'],

错误是它仍在运行,或者抛出正则表达式无效的错误。

【问题讨论】:

  • 顾名思义,此属性仅用于忽略路径
  • @Teneff 对使用不同的属性有何建议?

标签: regex reactjs jestjs


【解决方案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 块重命名为 xdescribedescribe.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\."
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2020-08-08
    • 2017-08-13
    • 2018-12-02
    • 2020-10-05
    相关资源
    最近更新 更多