提交中单个文件更改时的全局与单个文件覆盖阈值

Posted

技术标签:

【中文标题】提交中单个文件更改时的全局与单个文件覆盖阈值【英文标题】:Global vs single file coverage thresholds when single file change in commit 【发布时间】:2019-10-13 23:54:53 【问题描述】:

我正在使用 jest 测试我的反应组件并使用 HUSKY 进行预提交检查。

我在 jest.config.js 中具有以下配置的全局阈值覆盖率

coverageThreshold: 
    global: 
      branches: 80,
      functions: 80,
      lines: 90,
      statements: 90,
    ,
  ,

我有一个用例,我使用 npm run test -- --coverage --findRelatedTests 来检查仅更改文件的测试用例及其覆盖率。

但是上面的命令将我更改的文件的测试用例与全局进行比较,导致以下问题

=============================== Coverage summary ===============================
Statements   : 5.74% ( 21/366 )
Branches     : 8.93% ( 10/112 )
Functions    : 1.33% ( 1/75 )
Lines        : 6.27% ( 21/335 )
================================================================================
coverage threshold for statements (90%) not met: 5.74%
coverage threshold for branches (80%) not met: 8.93%
coverage threshold for lines (90%) not met: 6.27%
coverage threshold for functions (80%) not met: 1.33%

我想要的是它应该只检查并为更改的文件生成测试覆盖率,它不应该包括所有其他文件,然后比较显然会很​​低的覆盖率。

【问题讨论】:

也许--collectCoverageFrom 可能会有所帮助。与赫斯基的集成如何? @skyboyer 我已经尝试过了,但这似乎不起作用 您是否找到了使用 Husky 将更改的文件同时传递给 --collectCoverageFrom--findRelatedTests 的方法? @skyboyer 不,这就是我要找的东西,...开玩笑的文档对此不清楚。 让我改述一下:如果您手动将相同的文件传递给--collectCoverageFrom--findRelatedTests,它会正确计算覆盖率吗? (我无法检查,因为--findRelatedTests 在我的项目中无法正常工作)如果它与手动传递一起工作,那么它更多的是关于如何使用赫斯基来做到这一点。如果它不能那样工作,那么它是 Jest 覆盖率计算中的错误 【参考方案1】:

要测试代码的特定部分,您需要在测试用例中添加“only”关键字,见下文:

describe(......, (): void => 
   it.only(..........

然后在命令行上运行 npm/yarn test src/...url 到这个文档网

【讨论】:

以上是关于提交中单个文件更改时的全局与单个文件覆盖阈值的主要内容,如果未能解决你的问题,请参考以下文章

告警管理

有没有办法从业力覆盖文本报告器结果中排除所有 100% 或阈值的文件?

Git:将单个文件还原为其最后一次提交[重复]

在git下提交文件时如何控制重命名阈值?

我所了解的图像分割

Linux下更改文件权限以及系统权限预留阈值的设定