如何在笑话中使用--changedSince和--onlyChanged?

时间:2018-08-10 13:36:07

标签: git unit-testing testing jestjs

我想使用changedSinceonlyChanged标志来开玩笑。我更改了许多测试以及测试所依赖的文件。并且根据玩笑cli标志的文档:

  

changedSince :运行有关自提供分支以来所做更改的测试。如果当前分支与给定分支不同,那么将仅测试本地所做的更改。

     

仅已更改:别名-o。尝试根据当前存储库中已更改的文件来确定要运行的测试。仅当您当前正在git / hg存储库中运行测试并且需要静态依赖关系图(即,没有动态要求)时,该功能才有效。

但是当我运行jest --changedSince=masterjest --onlyChanged时,它将运行0个测试,而根本没有在终端中给出任何内容。

jest --listTests列出所有测试。但是,当我运行jest --listTests --changedSince=masterjest --listTests --onlyChanged时,它没有列出测试。

2 个答案:

答案 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