如何使用Node,Mocha

时间:2015-05-27 18:33:40

标签: node.js testing mocha istanbul

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

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

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

| app/
| - component/
| -- index.js
| -- test/
| ---- index.js

目前我的package.json看起来像这样。我正在玩Istanbul,但我与之无关。我也尝试使用Blanket取得了类似的成功。

{
  "scripts": {
    "test": "clear && mocha app/ app/**/test/*.js",
    "test-cov": "clear && istanbul cover npm test"
}

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

No coverage information was collected, exit without writing coverage information

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

TL; DR

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

修改

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

编辑2

我收到了another question已经回答了我的问题的通知。它只建议安装伊斯坦布尔并运行我已经完成的cover命令。另一个建议建议使用_mocha运行测试命令,我做过的一些研究是为了防止伊斯坦布尔吞下摩卡的标志,而且在新版本的摩卡中不是必需的。

3 个答案:

答案 0 :(得分:6)

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

istanbul cover _mocha test/**/*.js

答案 1 :(得分:1)

您需要.istanbul.yml个文件。我没有看到任何参考 - 很难说不知道它的内容。 我不认为有足够的信息来解决这个问题。如果你更新问题,我会更新这个答案,特别是在赏金到期之前,呃?

答案 2 :(得分:0)

这就是我在所有js项目中获得代码覆盖率的方式(看起来像来自Sachacr的那个):

istanbul cover _mocha -- -R spec --recursive test