当前npm test
正在运行所有扩展名为.test.js
的文件。我希望忽略某些文件。我在哪里配置该选项?我尝试过
"jest": {
"collectCoverageFrom": [
"src/App.test.js"
]
},
在package.json中。 我没什么区别。
答案 0 :(得分:1)
Create React App仅允许您在 package.json 中覆盖以下Jest配置:
"jest": {
"collectCoverageFrom": [],
"coverageThreshold": {},
"coverageReporters": [],
"snapshotSerializers": []
}
https://facebook.github.io/create-react-app/docs/running-tests#configuration
弹出创建React App并使用testPathIgnorePatterns
进行配置。
您仍然可以通过将--testPathIgnorePatterns
选项传递给react-scripts test
来覆盖Jest的配置。
例如:
"test": "react-scripts test --env=jsdom --testPathIgnorePatterns=src/ignoredDirectory",
答案 1 :(得分:0)
您可能想使用 testPathIgnorePatterns
作为 cli 参数,但请注意这会导致意外的副作用,因为它破坏了使用 npm test TestName
或 npm test -- -t TestName
运行单个测试的能力。
这是因为,据我所知,testPathIgnorePatterns
非常贪婪,因为 testPathIgnorePatterns
参数之后的任何参数都将用作 testPathIgnorePatterns
的值。>
例如:
如果我的 package.json
中有以下设置:
"test": "react-scripts test --testPathIgnorePatterns=e2e",
然后运行:npm test MyTest
那么得到的命令是:react-scripts test --testPathIgnorePatterns=e2e "App"
和 jest 将忽略 e2e
和 App
!
我发现的一种解决方法是不使用 testPathIgnorePatterns
cli arg,而是使用 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}"
]