如何使用Node,Mocha获取代码覆盖率信息

Chr*_*ght 22 testing mocha.js node.js istanbul

我最近在Mocha的帮助下开始进行Node项目的单元测试.到目前为止事情进展顺利,我发现我的代码已经有了很大的改进,因为我正在考虑在我的测试中涵盖的所有角度.

现在,我想与我的团队其他成员分享我的经验,并让他们自己进行测试.我想分享的部分信息是我的代码实际涵盖了多少.

下面是我的应用程序结构示例,我将其分成不同的组件或模块.为了促进重用,我试图将所有依赖项保持在最低限度并与组件文件夹隔离.这包括保持测试隔离,而不是test/项目根目录中的默认文件夹.

| app/
| - component/
| -- index.js
| -- test/
| ---- index.js
Run Code Online (Sandbox Code Playgroud)

目前我package.json看起来像这样.我正在和伊斯坦布尔一起,但我与之无关.我也尝试过使用Blanket,取得了类似的成功.

{
  "scripts": {
    "test": "clear && mocha app/ app/**/test/*.js",
    "test-cov": "clear && istanbul cover npm test"
}
Run Code Online (Sandbox Code Playgroud)

如果我test-cov按原样运行我的命令,我从伊斯坦布尔得到以下错误(这没有帮助):

No coverage information was collected, exit without writing coverage information
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:鉴于我目前的应用程序结构和环境,如何使用Istanbul(或其他工具)正确报告我的代码覆盖率?


TL; DR

如何使用Node,Mocha和我当前的应用程序结构报告我的代码覆盖率?


编辑

需要说明的是,Mocha正在当前状态下正确运行测试.获取代码覆盖率报告是我努力工作的原因.

编辑2

我收到通知,其他问题可能已经回答了我的问题.它只建议安装伊斯坦布尔并运行cover我已经完成的命令.另一个建议建议运行测试命令_mocha,我从一些研究中做的是阻止伊斯坦布尔吞下摩卡的标志,在新版本的摩卡中不是必需的.

Sac*_*acr 6

您应该尝试运行您的测试:

istanbul cover _mocha test/**/*.js
Run Code Online (Sandbox Code Playgroud)