Jest中函数覆盖的含义

Posted

技术标签:

【中文标题】Jest中函数覆盖的含义【英文标题】:Meaning of function coverage in Jest 【发布时间】:2022-01-06 01:28:13 【问题描述】:

这是在我的一个组件上运行 jest 的输出:

----------------------------|---------|----------|---------|---------|-------------------
File                        | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------------------------|---------|----------|---------|---------|-------------------
All files                   |     100 |      100 |      50 |     100 |                   
 search-suggestion-base.tsx |     100 |      100 |      50 |     100 |                   
----------------------------|---------|----------|---------|---------|-------------------
...
Jest: "global" coverage threshold for functions (100%) not met: 50%

注意% Funcs 不是 100 并且测试失败。 (覆盖阈值不是我设置的。我不会设置这么高的阈值。)

问题是,Jest 没有告诉我哪些是未覆盖的行。此外,我也很难弄清楚% Funcs 的含义是什么。我什至找不到这个% Funcs 的官方文档。

感谢任何帮助!

【问题讨论】:

能否在浏览器中打开.coverage/lcov-report/index.html查看是否有未覆盖的行?关于如何阅读报道记者,见***.com/questions/26618243/… @slideshowp2 非常感谢!该报告确实显示了未覆盖的线条! 【参考方案1】:

正如@slideshowp2 所指出的,.coverage/lcov-report/index.html 确实显示了未覆盖的线条。

.coverage 文件夹一开始并不存在。我必须使用--coverage 参数运行jest。您可以参考How to get the code coverage report using Jest?了解更多信息。

顺便说一句,事实证明,默认事件处理程序(即函数)没有被覆盖。所以我猜% Funcs 的字面意思是覆盖的函数的百分比。

在我的例子中,默认事件处理程序是一个空函数() => 。我想这就是为什么 Jest 告诉我“语句、分支和行”都被覆盖了,而“函数”却没有。

【讨论】:

以上是关于Jest中函数覆盖的含义的主要内容,如果未能解决你的问题,请参考以下文章

如何用 Jest 单元测试覆盖 TypeORM @Column 装饰器?

Jest、Typescript、ts-jest:覆盖范围略有不正确

Jest + Coverage + VueJs 如何覆盖 vue 方法?

在 JEST + ENZYME 中无法达到 100% 的分支覆盖率

在 NestJS Jest 测试中覆盖提供程序

使用 Nuxt 对 VueJS 应用程序的 Jest 测试覆盖率