问题标签 [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.
node.js - 使用伊斯坦布尔和 Mocha/Chai 覆盖功能
我无法理解如何对函数进行单元测试,以便伊斯坦布尔将它们视为涵盖。
举一个非常简单的例子,我创建了这个数学模块:
和基本单元测试:
伊斯坦布尔制作的报告给了我这些结果:
- 报表:66.67% (2 / 3)
- 分支:100% (0 / 0)
- 功能:0% (0 / 1)
- 行数:66.67% (2 / 3)
- 忽略:无
如果仅仅测试调用函数的结果不算作覆盖,那么当它在单元测试无法访问的函数范围内时,你应该如何测试这段代码?
code-coverage - 工作服 github 集成(与 qunit、istanbul、grunt)
我在让工作服工作时遇到问题。我在这里创建了一个简单的项目。
它似乎正确地输出了报告,但我肯定在某处错过了一步,因为工作服没有看到我被设置好了。没有分支出现,它只是给出了如何设置它的说明。我试图复制 qunit 正在做的事情,因为他们显然可以正常工作。
这是我到目前为止所做的。
创建了使用 node/grunt/qunit 以及工作服帐户的项目并打开了项目。然后我用这个替换了部分中的qunit
参考。devDependencies
package.json
我已将此添加到我的package.json
.
我已经qunit
在我的Gruntfile.js
.
然后我将此添加到我的.travis.yml
.
javascript - 使用 Karma 和 Istanbul 时从覆盖范围中排除文件
我正在使用 Karma 来测试我的 JavaScript 并获取覆盖率报告。我正在使用默认的伊斯坦布尔覆盖率报告。这是我的预处理器参数:
如您所见,我正在尝试使用“!” 作为否定命令,通常与 Node.js 一起使用。但是,它在这里不起作用,并且我的任何目录都没有被排除在外。
有什么办法可以做我想要完成的事情吗?
javascript - 完整的 Gulp 伊斯坦布尔报道
我正在使用 gulp-istanbul 通过 Gulp 生成 JavaScript 单元测试覆盖率报告。有没有办法配置伊斯坦布尔以生成我的 gulp 流中所有 JS 文件的完整覆盖率报告,而不仅仅是测试用例涉及的文件。
我正在做一个有很多 JS,但没有单元测试的项目,我们正在努力增加测试覆盖率。我想要一份覆盖率报告,首先显示我们大多数文件的 0% 覆盖率,但随着时间的推移,覆盖率会越来越高。
node.js - Karma - 伊斯坦布尔 - 代码覆盖率报告路径
我karma
用作 jasmine 测试运行器,instanbul
用作代码覆盖工具。一切都很完美,但有一个问题 - 有什么方法可以更改创建的报告的路径吗?
即对于 Chrome,我得到了/coverage/Chrome%2035.0.1916%20(Windows%207)/index.html
;我会更高兴/coverage/Chrome/index.html
任何建议都非常感谢。
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):
node.js - 如何在基于 Express 的 API 上设置代码覆盖率?
我在这个问题上已经有一段时间了,我无法让现有的解决方案为我工作。
我有一个用 Express.js 编写的 Node.js API。我一直在使用 Mocha、Chai 和 Supertest 为 API 编写测试。这些测试主要是集成测试。
一项测试可能如下所示:
实际测试效果很好,但现在我需要能够查看这些测试的代码覆盖率。我必须知道我没有充分测试什么。我尝试过使用 Mocha 的测试覆盖率:
和伊斯坦布尔的:
两者都遇到同样的问题:
你看,这是一个示例路由(用户注册)。我的测试肯定覆盖了它,但由于它们不直接调用此方法,因此覆盖工具假定它从未被调用过。这就是问题所在——代码覆盖工具没有捕获最终执行的代码。
我尝试了另一种解决方案 - 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 的代码覆盖率
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吗?我错过了一个技巧吗?
angularjs - 在浏览器中为 Jasmine 测试添加代码覆盖率
我在本地使用 npm 和 grunt 的代码覆盖率,但我想在浏览器中演示这一点。
如果我打开 codepen,如何在浏览器中生成代码覆盖率?
请举一个例子。
在这里,我正在测试一个控制器,而 Jasmine 测试了代码,但我想知道它是否 100% 被覆盖并在 browser 中显示。 http://codepen.io/clouddueling/pen/Jwaru?editors=001
我可以将我的代码提交到服务器吗?它是否立即在其他地方(例如在 heroku 上)进行了测试并获得了结果?Instanbul 能否以某种方式在客户端运行并输出 html 报告或 json 字符串?
node.js - 伊斯坦布尔和声纳之间的分支覆盖率不匹配
我的 Jenkins 工作通过 Sonar Runner 读取由伊斯坦布尔生成的 lcov 文件。伊斯坦布尔生成的 lcov-report 中的数字/未命中数与 Sonar 中显示的不匹配。伊斯坦布尔通过发现更多未命中而变得更严格,存在 0-7% 的差异。
是预期的吗?为什么有区别?
环境:
- SonarQube 3.5 和 3.7.4
- 声纳跑者 2.3
- 声纳 JavaScript 插件 1.6
- Node.js 代码