我在Jest测试覆盖率方面遇到2个问题:
1-Jest报告了100%(Stmts、分支、Func和Lines)的模块覆盖率,这些模块没有任何测试,但被测试的模块需要测试
2-Jest报告100%的分支覆盖率,这些模块既没有测试,也没有被测试模块所需
在图像中:
- Summer是一个测试模块
- toNum未测试,但由sum要求
- 子组件既未经过测试,也未被测试模块要求
我已经创建了一个回购协议来重现这个问题:https://github.com/hossamnasser938/Reproduce-Jest-Coverage-Issue
这是我的包裹json:
下面是我的文件夹结构:
如何从覆盖范围报告中删除sub.js
条目?非常感谢您的帮助。
1条答案
按热度按时间mxg2im7a1#
1-Jest报告了100%(Stmts、分支、Func和Lines)的模块覆盖率,这些模块没有任何测试,但被测试的模块需要测试
当你配置Jest来收集覆盖率时,这是预期的行为。所需的模块仍然由你的测试执行,尽管它们没有自己的测试。
这将使用覆盖率收集语句更新所有已执行的文件
您的测试正在执行所需模块中的所有代码,因此测试代码完全覆盖了该模块。即使该模块由另一个测试执行,您仍应为所需模块编写单独的测试,以确保它作为一个单元独立工作。
2-Jest报告100%的分支覆盖率,这些模块既没有测试,也没有被测试模块所需
同样,考虑到
collectCoverageFrom
的配置值包括sub.js
,并且sub的实现没有分支,因此Branch
语句将100%执行(因为没有分支),这也是预期行为。如果您希望Jest停止报告
sub.js
,那么您有几个选择:collectCoverageFrom
的配置,这将从覆盖率报告表中删除sub.js
的条目。collectCoverageFrom
的值以明确忽略sub.js
:就我个人而言,我会让一切保持原样,以提醒
sub.js
仍然需要在足够的覆盖率下进行测试。