伊斯坦布尔代码覆盖Mocha测试

时间:2015-06-11 02:28:25

标签: javascript node.js unit-testing mocha istanbul

我想让伊斯坦布尔工作。

我在运行伊斯坦布尔结束时不断收到此消息:

  

未收集任何承保范围信息,退出时未编写承保范围   信息

我已经尝试了我在网上找到的所有内容,你可以看到:

      "scripts": {
        "start": "node ./bin/start.js",
        "test": "mocha test --no-timeouts",
        "debug_mocha": "node-debug --no-timeouts _mocha",
        "eslint": "eslint .",
        "jshint": "jshint --exclude ./node_modules .",
        "istanbul": "istanbul cover --include-all-sources --hook-run-in-context node_modules/.bin/_mocha -- -u exports -R spec test/**/*",
        "istanbul2":"istanbul cover node_modules/.bin/_mocha -- -u exports -R spec test/**/*",
        "istanbul1":"istanbul cover node_modules/.bin/_mocha -- test/**/*",
        "istanbul0":"istanbul cover _mocha test/**/*.js",
        "istanbul3":"istanbul cover _mocha -- -R spec --recursive test"
      }

我的.istanbul.yml文件位于项目的根目录下,看起来伊斯坦布尔正在成功地将其收拾起来。

//.istanbul.yml
    instrumentation:
      compact: false
      save-baseline: true
    reporting:
      reports:
        - lcov
        - cobertura

我错过了什么?

3 个答案:

答案 0 :(得分:7)

终于明白了。

https://github.com/gotwarlost/istanbul/issues/44#issuecomment-57708358说:

  

直接使用_mocha不适用于Windows。请使用JS文件的完整路径

然后,经过一些实验,胜利:

istanbul cover C:/dev/my_project/node_modules/mocha/bin/_mocha --

答案 1 :(得分:7)

试试这个,可能适合你。 package.json中的脚本标记

"cover" : "NODE_ENV=test babel-node ./node_modules/babel-istanbul/lib/cli cover --dir ./coverage _mocha -- -R spec --ui bdd ./test/setup.js ./test --recursive"

setup.js 将是您的设置javascript

./ test 将是您所有测试所在的文件夹。

包需要安装:

  • babel-istanbul
  • 巴别节点
  • 摩卡

这对我有用:)(npm run cover)

注意: 如果在 Windows :删除 NODE_ENV = test ,可能需要将 _mocha 完整路径设置为节点模块文件夹

答案 2 :(得分:0)

如果您正在设置新项目并尝试让istanbul工作,请确保您至少有一个测试文件至少引用其中一个项目文件供伊斯坦布尔参考,以供其报道。< / p>

"istanbul": "0.4.4",
   "mocha": "3.0.0"

就我而言,我正在设置一个新项目并准备好第一个index.jstest/index.spec.js个文件。当我试图跑:

"test": "istanbul cover --report html node_modules/mocha/bin/_mocha -- test/**/*.js --ui bdd -R spec"

我从所有单元测试传递的mocha中得到了一个输出(没有编写测试,所以所有0都通过了)但之后我收到了这个错误:

  

未收集任何承保范围信息,退出时未编写承保范围信息

问题原因是我尚未在require文件中为index.js文件添加test/index.spec.js。伊斯坦布尔没有文件可以从测试文件中引用来检查覆盖率信息。

如果它是npm脚本中引用的_mocha的路径问题,那么&#后面会有一个&#34; SyntaxError:&#34; 消息34;没有收集覆盖范围信息&#34; 消息。