22

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

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

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

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

目前我的package.json样子是这样的。我在玩弄伊斯坦布尔,但我与它无关。我也尝试过使用具有相似成功水平的毯子。

{
  "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

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


TL;博士

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


编辑

需要明确的是,Mocha 在当前状态下正在正确运行测试。获取代码覆盖率报告是我开始工作时遇到的困难。

编辑 2

我收到通知说另一个问题可能已经回答了我的问题。它只建议安装伊斯坦布尔并运行cover我已经完成的命令。另一个建议建议使用 运行测试命令_mocha,根据我所做的一些研究,这是为了防止伊斯坦布尔吞下 Mocha 的标志,并且在较新版本的 Mocha 中没有必要。

4

3 回答 3

6

您应该尝试像这样运行测试:

istanbul cover _mocha test/**/*.js
于 2015-06-01T15:29:32.423 回答
1

你需要一个.istanbul.yml文件。我没有看到任何对它的引用——在不知道它的内容的情况下很难说。我认为没有足够的信息来解决这个问题。如果您更新问题,我会更新此答案,尤其是在赏金到期之前,是吗?

于 2015-06-06T20:15:00.047 回答
0

这就是我如何获得所有 js 项目的代码覆盖率(看起来像来自 Sachacr 的项目):

istanbul cover _mocha -- -R spec --recursive test
于 2015-06-06T15:11:29.883 回答