我想使用changedSince和onlyChanged标志来开玩笑。我更改了许多测试以及测试所依赖的文件。并且根据玩笑cli标志的文档:
changedSince :运行有关自提供分支以来所做更改的测试。如果当前分支与给定分支不同,那么将仅测试本地所做的更改。
仅已更改:别名-o。尝试根据当前存储库中已更改的文件来确定要运行的测试。仅当您当前正在git / hg存储库中运行测试并且需要静态依赖关系图(即,没有动态要求)时,该功能才有效。
但是当我运行jest --changedSince=master
或jest --onlyChanged
时,它将运行0个测试,而根本没有在终端中给出任何内容。
jest --listTests
列出所有测试。但是,当我运行jest --listTests --changedSince=master
或jest --listTests --onlyChanged
时,它没有列出测试。
答案 0 :(得分:0)
我发现--changedSince
和--onlyChanged
也有点时髦。但是,您可以使用lint-staged和Jest的--findRelatedTests
并将其添加到预提交的挂钩中。
-findRelatedTests {spaceSeparatedListOfSourceFiles}:查找并运行覆盖以空格分隔的作为参数传递的源文件列表的测试。对于预提交挂钩集成很有用,以运行最少数量的必要测试。可以与--coverage一起使用,以包括源文件的测试范围,而无需重复的--collectCoverageFrom参数。
这是您需要在package.json
文件中进行的更改。
{
"scripts": {
"test": "CI=true jest",
"test:staged": "CI=true jest --env=jsdom --findRelatedTests"
}
}
然后
"lint-staged": {
"src/**/*.js": [
"test:staged",
"git add"
]
}
这样,在每次提交时,Jest将仅对相关的源文件运行测试。不要忘记设置CI=true
环境变量,否则您的测试将在监视模式下运行,并且永远不会结束。
如果您仍然想运行全套测试,npm test
可以解决问题。另外,最好在进入分支或发送拉取请求时,使用CI环境来运行所有测试。
答案 1 :(得分:0)
您可以使用-o标志在监视模式下运行更改的测试文件。 https://jestjs.io/docs/en/cli
jest -o