用Karma,browserify和Coffeescript测试覆盖率

iLe*_*ing 6 code-coverage coffeescript browserify karma-runner istanbul

我有麻烦添加测试代码覆盖率,我使用Karma和添加到Karma的文件已经与browserify捆绑在一起,所以在karma.conf.coffee它看来是这样的:

files: [
   { pattern:'bin/public/client/app.js', served:yes: included:yes }
   { pattern:'src/lib/vendor/angular-mocks/angular-mocks.js', served:yes: included:yes }
   { pattern:'bin/tests.js', served:yes: included:no }
]
Run Code Online (Sandbox Code Playgroud)

这适用于运行测试,但不适用于覆盖范围

我正在使用karma-coveragenpm包,这个:

preprocessors: 'bin/public/client/app.js':['coverage']

reporters: ['progress','coverage']
Run Code Online (Sandbox Code Playgroud)

实际上确实创建了覆盖率统计文件,但这些文件是完全错误的,因为它会使从node_modules带来的浏览器部分变得更糟(因为我没有测试来覆盖那些)

理想情况下,我必须收集browserify生成的源映射,并针对这些映射运行覆盖,但browserify将源映射嵌入到.js文件中.使用karma-sourcemap-loader让我看到测试的原始coffeescript文件,在调试时(由于某种原因它只适用于ChromeCanary,但它可以工作)

我尝试过这样做preprocessors: 'src/client/**/*.coffee':['coverage'],但是没有任何统计数字表示"无数据显示"

你有什么想法?

UPD:

我想通过运行browserify-istanbul转换后coffeeify,这给了我这样的好图:在此输入图像描述

现在,我需要以某种方式从中删除app.js,因为它真的没关系,真的很困惑

UPD:

哦,而不是javascript我必须提供咖啡文件:

preprocessors : {
    'bin/tests.js': ['sourcemap']
    'src/client/**/*.coffee': ['coverage']
}
Run Code Online (Sandbox Code Playgroud)

iLe*_*ing 3

看来我回答了我自己的问题。另外,当前版本中似乎存在一个错误- 当它(默认情况下为 html)时karma-coverage会抛出错误。我很高兴我已经弄清楚了。看到测试覆盖了多少代码总是很高兴coverageReporter.typehtml