javascript - 从 Node 访问 Istanbul Code Coverage 信息

标签 javascript node.js istanbul

上下文

我正在开发living-tests对于 Node.js。在这种情况下,我对事情通常是如何完成的不太感兴趣,而是如何更好地完成它们,因此必然会有所不同。

问题

在 javascript 测试脚本中,我希望能够指定一些测试代码打算涵盖的内容。假设我有一个 File 原型(prototype),我想测试 path 属性。在执行此属性的代码之前,我想以某种方式指定正在测试的是什么。然后在该代码运行后,我想指定它已完成。在这些点之间,当代码被执行时,我不想计算任何覆盖该属性以外的任何其他内容的代码覆盖率。通过这种方式,开发人员可以确保某些内容不仅仅是偶然覆盖的,这可以帮助开发人员了解他们已经测试过的和没有进行过彻底测试的内容。这旨在部分解决代码覆盖问题,但不一定意味着某些内容已经过良好测试。

方法

据我所知,Istanbul 是唯一常用和推荐的 javascript 代码覆盖工具,因此我目前正专注于使用该工具。我知道您必须在启动 Node 之前启动 Istanbul 尔,以便它可以检测您的代码。但是,我怀疑只要已经完成,在 Node 中运行的代码就应该能够访问关于到目前为止所涵盖内容的代码覆盖信息。我很确定如果我能做到这一点,我就能弄清楚如何使用它来完成我想要的。

如何从 javascript 访问代码覆盖率信息?

最佳答案

问题是要求一些不能解决问题的东西...

您可以在触发代码覆盖率运行后访问 coverage.json 中的信息。参见 https://github.com/gotwarlost/istanbul/blob/master/coverage.json.md

但我认为您需要的是其他算法。您将其指定为“我想以某种方式指定正在测试的内容。”不幸的是,这太模糊了,无法推荐任何东西。

代码覆盖工具只观察测试期间执行的内容,并将其他所有内容标记为“未测试”。那里没有更多的逻辑。

关于javascript - 从 Node 访问 Istanbul Code Coverage 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40382768/

相关文章:

vue.js - Cypress 与 Istanbul 尔不生成代码覆盖率报告

Javascript jQuery ajax

javascript - 检查数组中是否至少有两个元素大于零 - JavaScript/Typescript

node.js - 从 Google 云端硬盘中的特定文件夹中列出其中的文件夹和文件

react-native - 如何获得集成测试的 React Native 代码覆盖率?

angular - 如何在获得代码覆盖率的同时排除规范文件 [Angular]

php - Javascript lastIndex 正则表达式属性到 PHP 正则表达式

javascript - Sails js 未声明的变量 : NaN when modelling associations

node.js - Node.js http 请求是否可以等待来自另一个 http 请求的信号才能完成?

php - iOS 选择哪种服务器端语言,以及在处理套接字连接时首选哪种服务器后端