NodeJS 执行'npm测试'时忽略某些档案

3ks5zfa0  于 2022-12-03  发布在  Node.js
关注(0)|答案(2)|浏览(162)

当前npm test正在运行扩展名为.test.js的所有文件。我希望忽略某些文件。在哪里配置该选项?我尝试过

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

在package.json中。我看不出有什么不同。

waxmsbnn

waxmsbnn1#

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

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

溶液1

弹出Create React应用程序并使用testPathIgnorePatterns进行配置。

溶液2

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

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

svujldwt2#

您可能会尝试将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"
和笑话将被忽略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}"
]

相关问题