问题标签 [istanbul]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1441 浏览

node.js - 使用伊斯坦布尔和 Mocha/Chai 覆盖功能

我无法理解如何对函数进行单元测试,以便伊斯坦布尔将它们视为涵盖。

举一个非常简单的例子,我创建了这个数学模块:

和基本单元测试:

伊斯坦布尔制作的报告给了我这些结果:

  • 报表:66.67% (2 / 3)
  • 分支:100% (0 / 0)
  • 功能:0% (0 / 1)
  • 行数:66.67% (2 / 3)
  • 忽略:无

在此处输入图像描述

如果仅仅测试调用函数的结果不算作覆盖,那么当它在单元测试无法访问的函数范围内时,你应该如何测试这段代码?

0 投票
1 回答
1706 浏览

code-coverage - 工作服 github 集成(与 qunit、istanbul、grunt)

我在让工作服工作时遇到问题。我在这里创建了一个简单的项目。

它似乎正确地输出了报告,但我肯定在某处错过了一步,因为工作服没有看到我被设置好了。没有分支出现,它只是给出了如何设置它的说明。我试图复制 qunit 正在做的事情,因为他们显然可以正常工作。

这是我到目前为止所做的。

创建了使用 node/grunt/qunit 以及工作服帐户的项目并打开了项目。然后我用这个替换了部分中的qunit参考。devDependenciespackage.json

我已将此添加到我的package.json.

我已经qunit在我的Gruntfile.js.

然后我将此添加到我的.travis.yml.

0 投票
4 回答
11453 浏览

javascript - 使用 Karma 和 Istanbul 时从覆盖范围中排除文件

我正在使用 Karma 来测试我的 JavaScript 并获取覆盖率报告。我正在使用默认的伊斯坦布尔覆盖率报告。这是我的预处理器参数:

如您所见,我正在尝试使用“!” 作为否定命令,通常与 Node.js 一起使用。但是,它在这里不起作用,并且我的任何目录都没有被排除在外。

有什么办法可以做我想要完成的事情吗?

0 投票
4 回答
10905 浏览

javascript - 完整的 Gulp 伊斯坦布尔报道

我正在使用 gulp-istanbul 通过 Gulp 生成 JavaScript 单元测试覆盖率报告。有没有办法配置伊斯坦布尔以生成我的 gulp 流中所有 JS 文件的完整覆盖率报告,而不仅仅是测试用例涉及的文件。

我正在做一个有很多 JS,但没有单元测试的项目,我们正在努力增加测试覆盖率。我想要一份覆盖率报告,首先显示我们大多数文件的 0% 覆盖率,但随着时间的推移,覆盖率会越来越高。

0 投票
1 回答
2070 浏览

node.js - Karma - 伊斯坦布尔 - 代码覆盖率报告路径

karma用作 jasmine 测试运行器,instanbul用作代码覆盖工具。一切都很完美,但有一个问题 - 有什么方法可以更改创建的报告的路径吗?

即对于 Chrome,我得到了/coverage/Chrome%2035.0.1916%20(Windows%207)/index.html;我会更高兴/coverage/Chrome/index.html

任何建议都非常感谢。

0 投票
2 回答
2538 浏览

node.js - 伊斯坦布尔代码覆盖率与 mocha 测试与咖啡脚本

我正在使用 mocha 运行纯粹在咖啡脚本中的测试。我还希望能够使用 istanbul 生成代码覆盖率报告。

请注意,我在文件中使用带有选项--compilers coffee:coffee-script/register的mocha mocha.opts

我遇到的问题是没有涵盖需要其他咖啡脚本源文件的测试。相反,如果我需要 js 文件,则可以很好地覆盖它。

我错过了什么吗?


我的npm test命令是:istanbul test --report html -x 'vendor/**' _mocha. 我npm test --coverage用来执行伊斯坦布尔的覆盖实用程序。

这是 mocha 测试的示例 (./test/test.coffee):

0 投票
2 回答
5557 浏览

node.js - 如何在基于 Express 的 API 上设置代码覆盖率?

我在这个问题上已经有一段时间了,我无法让现有的解决方案为我工作。

我有一个用 Express.js 编写的 Node.js API。我一直在使用 Mocha、Chai 和 Supertest 为 API 编写测试。这些测试主要是集成测试。

一项测试可能如下所示:

实际测试效果很好,但现在我需要能够查看这些测试的代码覆盖率。我必须知道我没有充分测试什么。我尝试过使用 Mocha 的测试覆盖率:

伊斯坦布尔的:

两者都遇到同样的问题:

https://www.dropbox.com/s/qcgmout6hx91xgs/Screenshot%202014-04-19%2020.42.44.png

你看,这是一个示例路由(用户注册)。我的测试肯定覆盖了它,但由于它们不直接调用此方法,因此覆盖工具假定它从未被调用过。这就是问题所在——代码覆盖工具没有捕获最终执行的代码。

我尝试了另一种解决方案 - Istanbul Middleware,它实际上似乎更好地捕获了信息(虽然它很hacky)。然而,这里的相同路线看起来像:

在此处输入图像描述

这显然也是不可取的。当然其他应用程序也遇到了这个问题,他们是怎么做的呢?

注意:我也安装了 jscoverage 以使所有这些工作。

我看过的资料来源:
https ://brianstoner.com/blog/testing-in-nodejs-with-mocha/
http://boycook.wordpress.com/2013/03/29/automated-javascript-testing-with -mocha-and-js-coverage-for-nodejs/
Mocha 的代码覆盖率

0 投票
1 回答
1068 浏览

node.js - 我可以使用伊斯坦布尔来检测 mocha html-cov

我正在尝试使用istanbul instrument输出mocha -R html-cov但无法使其正常工作。

我的测试脚本是:

我的测试有以下开关:

伊斯坦布尔给了我一个很好的输出lcov-report/index.html
Mocha 的 html-cov 给了我“0% 覆盖率 0 SLOC”coverage.html

伊斯坦布尔的lcov报告是丑陋的。我想使用漂亮的mocha -R html-cov报告。

我发现的所有示例都使用 jscoverage。我必须使用jscoverage吗?我错过了一个技巧吗?

0 投票
2 回答
2639 浏览

angularjs - 在浏览器中为 Jasmine 测试添加代码覆盖率

我在本地使用 npm 和 grunt 的代码覆盖率,但我想在浏览器中演示这一点。

如果我打开 codepen,如何在浏览器中生成代码覆盖率?
请举一个例子。

在这里,我正在测试一个控制器,而 Jasmine 测试了代码,但我想知道它是否 100% 被覆盖并在 browser 中显示。 http://codepen.io/clouddueling/pen/Jwaru?editors=001

我可以将我的代码提交到服务器吗?它是否立即在其他地方(例如在 heroku 上)进行了测试并获得了结果?Instanbul 能否以某种方式在客户端运行并输出 html 报告或 json 字符串?

0 投票
1 回答
1678 浏览

node.js - 伊斯坦布尔和声纳之间的分支覆盖率不匹配

我的 Jenkins 工作通过 Sonar Runner 读取由伊斯坦布尔生成的 lcov 文件。伊斯坦布尔生成的 lcov-report 中的数字/未命中数与 Sonar 中显示的不匹配。伊斯坦布尔通过发现更多未命中而变得更严格,存在 0-7% 的差异。

是预期的吗?为什么有区别?

环境:

  • SonarQube 3.5 和 3.7.4
  • 声纳跑者 2.3
  • 声纳 JavaScript 插件 1.6
  • Node.js 代码