使用Istanbul和Mocha来覆盖ES6代码

Tra*_*Guy 5 code-coverage mocha.js node.js ecmascript-6 istanbul

我有用ES6编写的Node代码,我通过发布测试mocha --harmony.测试很好 - 一切正常.

现在我想添加coverage和istanbul,但是我遇到了第一个箭头函数的错误:

No coverage information was collected, exit without writing coverage information
c:\Users\Guy\Code\alpha-dev\tests\helpers.js:12
    setTimeout(() => {
                ^
SyntaxError: Unexpected token )
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Module._extensions..js (module.js:478:10)
    at Object.Module._extensions..js (c:\Users\Guy\Code\alpha-dev\node_modules\istanbul\lib\hook.js:101:13)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
Run Code Online (Sandbox Code Playgroud)

这是我试过的:

  1. 安装伊斯坦布尔和谐(来自git://github.com/gotwarlost/istanbul.git#harmony)作为我的开发依赖.
  2. 运行以下命令: "./node_modules/.bin/istanbul" cover "./node_modules/mocha/bin/_mocha" -- --harmony tests -R spec
  3. 伊斯坦布尔和_mocha旗帜的组合

我如何运行istanbul来涵盖使用ES6功能编写的测试?我错过了什么?

Tra*_*Guy 2

刚刚被 LinkedIn Node.JS 小组的一位乐于助人的人解决了这个问题。命令行应该是:

node --harmony ./node_modules/istanbul-harmony/lib/cli.js cover --hook-run-in-context ./node_modules/mocha/bin/_mocha -- --R spec --U exports tests
Run Code Online (Sandbox Code Playgroud)

虽然这相当麻烦,但您可以将其放入package.json脚本部分,然后npm run cover从命令行运行。