【问题标题】:How can I use --changedSince and --onlyChanged in jest?如何在玩笑中使用 --changedSince 和 --onlyChanged?
【发布时间】:2019-01-18 03:28:01
【问题描述】:

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

changedSince:运行与自提供分支以来的更改相关的测试。如果当前分支已经偏离给定分支,那么只会测试本地所做的更改。

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

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

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

【问题讨论】:

    标签: git unit-testing testing jestjs


    【解决方案1】:

    您可以使用“-o”标志在监视模式下运行更改的测试文件。 https://jestjs.io/docs/en/cli

    jest -o
    

    【讨论】:

      【解决方案2】:

      我发现 --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 环境来运行所有测试。

      【讨论】:

        猜你喜欢
        • 2018-08-22
        • 1970-01-01
        • 1970-01-01
        • 2021-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        • 2021-08-14
        相关资源
        最近更新 更多