问题标签 [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 回答
549 浏览

unit-testing - 路由代码覆盖率100%,无需任何测试

我正在为一个简单的 AngularJS 项目编写测试,并使用伊斯坦布尔来计算代码覆盖率。根据伊斯坦布尔,我有一个具有 100% 代码覆盖率的文件,但我没有对其进行任何测试:

伊斯坦布尔的统计数据是:

并且整个 HTML 报告页面为“绿色”,表明代码覆盖率良好。

为什么会这样?有什么可做的吗?(这是伊斯坦布尔的问题吗?)

0 投票
2 回答
3036 浏览

gruntjs - 如何让 mocha 测试读取和使用来自伊斯坦布尔的检测代码?

我希望能够使用html-cov记者,即使测试通过了,所有的覆盖率值都是 0。

我使用 Grunt,Istanbul 来创建检测代码和 mocha 进行测试,这是我的 grunt 文件

检测代码如下所示: http: //pastebin.com/3wAt5VZT

istanbul lcov.info 文件的一部分(已正确生成)

mocha 似乎没有获得测试覆盖率,但如果我启用storeCoverageand makeReport,instabul 会向我显示正确的文件数和每个文件中使用的代码百分比。mocha 只能使用jscoverage的覆盖范围吗?如果没有,我是否缺少任何步骤?

0 投票
1 回答
4044 浏览

mocha.js - 使用伊斯坦布尔向测试脚本发送参数

我正在尝试使用istanbul查看我的Mocha测试代码覆盖率,但我需要向测试脚本提供参数,因为否则它只会在测试目录中运行测试。--recursive_mocha

我试过istanbul cover "_mocha --recursive"了,但它说Unable to resolve file [_mocha --recursive]

0 投票
2 回答
777 浏览

code-coverage - 在 karma 中指定要为其生成代码覆盖率的文件

我正在尝试为我目前正在从事的项目生成代码覆盖率。该项目已有几年历史,我们最近才开始编写单元测试,这意味着我只想为我们有实际单元测试的文件生成覆盖范围。测试是用 jasmine 编写的,我们使用 karma 来创建代码覆盖率。

目前,业力配置的预处理器部分看起来像这样:

然而,似乎只为以这种方式列出的第一个文件生成代码覆盖率。我见过的所有示例都使用正则表达式列出了所有文件,但是由于我们对不同文件夹中的多个文件进行了测试,这些文件的名称完全不同,并且其中一些文件夹主要包含没有任何单元测试的代码,我不确定如何创建一个能够匹配我们拥有的不同文件的正则表达式。

有没有办法在不使用正则表达式的情况下列出多个文件,如果有一种简单的方法可以创建一个只匹配我们有单元测试的文件的正则表达式?

0 投票
3 回答
2937 浏览

karma-runner - 业力报告错误

我已经为我的karma.conf.js配置了启用预处理功能,以获取有关我的测试代码覆盖率的报告。我已将此行添加到预处理器部分。

我得到的是一份完全错误的报告。我知道我已经为每个模块和其中的功能编写了测试。但覆盖率报告只正确显示了服务测试。

例如指令的测试。我知道我已经编写了一些测试,并且这些测试也将被执行。但报告显示我只测试了 36% 的代码行。

覆盖报告

这种奇怪行为的原因可能是什么?

更新:

我从规范记者那里看到了这个输出:

所以我认为我的测试将全部执行。

0 投票
2 回答
2365 浏览

angularjs - AngularJS 中 $routeChangeStart 的 Jasmine 单元测试用例

嗨,我正在使用构建一个应用程序AngularJS,现在我正在对我的应用程序进行单元测试。我知道如何为服务、控制器等编写单元测试用例。但我不知道如何为$routeChangeStart.

我的 app.js 中有以下代码

我编写了这段代码来确定用户是否为我的应用程序中的每个路由登录。我AuthenticationService为此目的编写了一项服务,例如;

我的会话服务喜欢;

Jasmine用来编写测试用例并Istanbul用于代码覆盖率。当我使用运行测试Grunt时,我的 app.js 中出现了类似的内容;

在此处输入图像描述

这是因为我没有在我的测试用例中涵盖这些语句,因为我不知道如何为这段特定的代码编写测试用例。有什么建议么?

0 投票
2 回答
1351 浏览

node.js - 我怎样才能让伊斯坦布尔使用节点、摩卡、茉莉和需要 js

我有一个现有的测试套件,它使用 mocha、require 和 jasmine 在 node.js 中运行良好,测试通过 psake powershell 脚本运行。我正在尝试添加测试覆盖率,因此要运行单元测试而不是:

节点 unitTest.js

我在做

伊斯坦布尔封面 unitTest.js

这似乎有效,但只给了我关于 unitTest.js 本身的覆盖信息,而不是项目中使用的任何其他实际 javascript 文件。我猜这是因为 require/mocha 组合,所以它不知道我正在使用的 js 文件。

我尝试在代码覆盖之前手动检测所有文件,并在复制/检测的文件上运行相同的命令,但得到了相同的结果。有关使这项工作的任何提示?

这是 unitTest.js 的最后一部分

});

0 投票
1 回答
1173 浏览

intern - 与实习生一起生成 HTML 代码覆盖率报告

测试框架 ( http://theintern.io ) 带有内置的伊斯坦布尔

添加lcov到报告数组中只会生成一个 lcov.info 文件,该文件可能会被转换为genhtml

是否可以生成完整的 html 报告?

0 投票
1 回答
219 浏览

javascript - 动态更改测试代码覆盖的需求语句的更好方法?

我有一个 node.js 库,我已经为 BDD 设置了mochachai。我还使用istanbul添加了代码覆盖率。一切都通过grunt任务运行。

我挣扎了一段时间,在我的设置基于这个存储库后,我终于让它工作了:https ://github.com/morkai/h5.buffers 。它有效,但我不喜欢实施。

grunt-istanbul 插件对文件进行检测,设置环境变量,测试使用环境变量来查找检测测试的位置。这是我不喜欢的最后一部分。

然后在测试文件中,代码为:

在运行测试文件之前,我还在测试中使用了一个助手来进行所需的任何初始化。所以我有两个想法;

  1. 使用测试助手拉入文件并在那里隐藏详细信息:

    /li>
  2. 使用测试运行器?我已经看到了对此的引用,但我没有找到很多关于它和最佳实践的信息。

有没有更好的办法?

PS如果有人对这个问题有一个更好的标题的建议,我愿意接受。

PPS请不要告诉我在你的回答中切换到毯子。我对两者都进行了评估并决定选择伊斯坦布尔,因为它提供了更多代码覆盖率见解(例如,分支)。如果毯子的伊斯坦布尔分支完成了,那么我会考虑切换。

0 投票
1 回答
2100 浏览

javascript - 通过伊斯坦布尔提高分支机构覆盖率

以下代码片段只有 50% 的分支覆盖率(请参阅下面的覆盖率报告)我不知道如何改进这一点,因为没有if语句。

我认为伊斯坦布尔必须进行某种我不完全理解的测量,任何指针表示赞赏。

伊斯坦布尔报道