1

我们有一个 React / TypeScript 项目,并使用 Jest + ts-jest 作为我们的测试运行器。在本地一切正常,但在我们的 Jenkins CI 中运行时失败。

这是 Jenkins 控制台的一个片段:

No tests found, exiting with code 1
In /var/lib/jenkins/workspace/fix-jenkins-tests
  403 files checked.
  testMatch: **/__tests__/**/*.[jt]s?(x), **/?(*.)+(spec|test).[jt]s?(x) - 38 matches
  testPathIgnorePatterns: /lib/, /node_modules/ - 0 matches
  testRegex:  - 0 matches
Pattern:  - 0 matches
error Command failed with exit code 1.

奇怪的是,Jest 说“未找到测试”但也说“testMatch:... 38 个匹配”

4

1 回答 1

3

这里的提问者的队友,这最终变得更加微妙。这里的罪魁祸首是 testPathIgnorePatterns 中的 /lib/。testPathIgnorePatterns 与 testMatch 或 testRegex 找到的任何测试文件的完整路径匹配。

事实证明,我们的 Jenkins 实例的工作目录类似于/var/lib/jenkins/workspacetestMatch 会找到我们所有的测试文件,但是 testPathIgnorePatterns 会在 /lib/ 上匹配它们并排除它们。

以与环境无关的方式排除“/lib/”文件夹的正确方法是<rootDir>像这样使用令牌

testPathIgnorePatterns: [ '<rootDir>/lib/', ],

于 2019-12-09T21:19:33.140 回答