在运行 `npm test` 时忽略特定的文件

15

目前npm test正在运行所有扩展名为.test.js的文件。我希望忽略一些文件。我在哪里配置这个选项?我试过了。

 "jest": {
        "collectCoverageFrom": [
            "src/App.test.js"
        ]
    },

在 package.json 文件中, 我没有看到任何区别。


你需要使用 testPathIgnorePatterns - Sahil Raj Thapa
根据create-react-app文档,只有这4个属性可以被覆盖。 - PCK
2个回答

32

package.json 只允许您使用 create-react-app 覆盖以下 Jest 配置。

"jest": {
  "collectCoverageFrom": [],
  "coverageThreshold": {},
  "coverageReporters": [],
  "snapshotSerializers": []
}

解决方案1

通过使用testPathIgnorePatterns 拆卸 Create React App 并进行配置。

解决方案2

您仍然可以通过将--testPathIgnorePatterns选项传递给react-scripts test来覆盖Jest的配置。

例如:

"test": "react-scripts test --testPathIgnorePatterns=src/ignoredDirectory --env=jsdom"

如果我只想针对特定目录中的文件运行测试怎么办? - PCK
"test": "react-scripts test --env=jsdom --testMatch=src/App.test.js"。我尝试了这个设置,只运行App.test.js文件。但是使用npm test命令却没有匹配到任何结果。@tobias - PCK
看一下这个答案:https://dev59.com/_1cP5IYBdhLWcg3wa5M3#44446669 可能会有所帮助 :) - tobias
2
请注意,使用 testPathIgnorePatterns 作为 cli 参数会破坏使用 npm test TestNamenpm test -- -t TestName 运行一个测试的能力。 - badsyntax

7
您可能会考虑使用testPathIgnorePatterns作为cli参数,但请注意,这会导致意外的副作用,因为它会破坏使用npm test TestNamenpm test -- -t TestName 运行单个测试的能力。

因为就我所知,testPathIgnorePatterns非常贪婪,即在testPathIgnorePatterns参数之后的任何参数都将用作testPathIgnorePatterns的值。

例如:

如果我在我的package.json中设置了以下内容:

"test": "react-scripts test --testPathIgnorePatterns=e2e",

然后运行:npm test MyTest

那么得到的命令是:react-scripts test --testPathIgnorePatterns=e2e "App"

jset将会忽略e2eApp

我发现的一个解决方法是不使用testPathIgnorePatterns的cli参数,而是使用testMatch jest配置。

假设我想忽略e2e目录中的所有文件,则可以使用以下正则表达式:

"testMatch": [
  "<rootDir>/src/(?!e2e)*/**/__tests__/**/*.{js,jsx,ts,tsx}",
  "<rootDir>/src/(?!e2e)*/**/*.{spec,test}.{js,jsx,ts,tsx}"
]

如果我只想包含特定目录中的测试,可以使用:

"testMatch": [
  "<rootDir>/src/modules/**/__tests__/**/*.{js,jsx,ts,tsx}",
  "<rootDir>/src/modules/**/*.{spec,test}.{js,jsx,ts,tsx}"
]

这里是关于testMatch的文档,供任何感兴趣的人查阅。链接:https://jestjs.io/docs/configuration#testmatch-arraystring - Joe Sadoski
此外,testPathIgnorePatterns 可以在 package.json 中进行配置,而无需更改 npm test 命令。 - Joe Sadoski
5
根据 https://create-react-app.dev/docs/running-tests/#configuration,`testPathIgnorePatterns` 无法在 package.json 中进行配置。 - BobtheMagicMoose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接