ES6 React istanbul没有收集覆盖范围信息,退出时没有编写覆盖范围信息

时间:2015-12-30 23:40:54

标签: reactjs mocha ecmascript-6 babeljs istanbul

我在运行测试时遇到问题,代码覆盖率不起作用,我有消息

  

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

我使用ES6编写测试,并使用babel来转换代码。

为了解决这个问题,我使用了本讨论中提供的github项目:https://github.com/gotwarlost/istanbul/issues/496

诀窍是使用

`babel-node ./node_modules/istanbul/lib/cli cover node_modules/mocha/bin/_mocha -- --require test-helper.js --bail --recursive 'src/js/__tests__/**/*.test.js'` 

而不是

"istanbul cover node_modules/mocha/bin/_mocha -- --compilers js:babel-core/register --require scripts/test-helper.js --recursive 'src/js/__tests__/**/*.test.js'"

它运作良好但问题是代码覆盖率只考虑您测试的类,而不是您创建的所有类。

如果我在项目的mod.js文件夹中添加新类src,则app.js组件的覆盖率为100%。这是合乎逻辑的,因为它已经过全面测试,但在报告中mod.js类没有出现在报告中 - 它没有列为0%测试的类(https://github.com/JakeSidSmith/istanbul-no-coverage)。

我尝试添加cover -x 'src/js/__tests__/**/*.test.js'但不起作用。我不能混合第一种风格和第二种风格。

另一个问题是,在上面提供的项目示例中,test-helper.js被视为已经过全面测试,我不能使用cover -x将其从覆盖范围中排除。

使用ES6 / mocha并使用mocha调用babel-core/register还有其他技巧可以获得正确的代码覆盖吗?

1 个答案:

答案 0 :(得分:7)

我也遇到了同样的问题,但这个github issue引导得很好。我希望您可以使用istanbul@1.0.0-alpha.2来解决我的问题。

我的命令就像这样istanbul cover --dir ./coverage _mocha -- ./tests/**/**/*.js --opts ./tests/mocha.opts -R spec