使用Karma、browserify和Coffeescript测试覆盖率

使用Karma、browserify和Coffeescript测试覆盖率,coffeescript,code-coverage,karma-runner,browserify,istanbul,Coffeescript,Code Coverage,Karma Runner,Browserify,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:ye

我在添加测试代码覆盖率方面遇到了问题,我正在使用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 }
]
这适用于运行测试,但不适用于覆盖率

我正在使用
karma coverage
npm包,这是:

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

reporters: ['progress','coverage']
实际上确实创建了coverage stat文件,但这些文件是完全错误的,因为它会使从node_模块带来的browserify部分变红(因为我没有测试来覆盖这些)

理想情况下,我必须收集browserify生成的源地图,并对其运行覆盖率,但browserify将源地图嵌入到.js文件中。使用
karma sourcemap loader
可以在调试时查看测试的原始coffeescript文件(出于某种原因,它只在Chromecary中工作,但仍然有效)

我试着做
预处理器:'src/client/***.coffee':['coverage']
,但这根本不会产生“无数据显示”的统计信息

你有什么想法吗

upd:

我在
coffeeify
之后立即运行
browserify伊斯坦布尔
transform,这给了我这样一个很好的图表:

现在,我需要以某种方式将app.js从中删除,因为实际上这并不重要,而且会让人感到困惑

upd:

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

preprocessors : {
    'bin/tests.js': ['sourcemap']
    'src/client/**/*.coffee': ['coverage']
}

看来我回答了我自己的问题。另外,当前版本的
karma coverage
中似乎有一个bug-当
coverageReporter.type
html
(默认为html)时,它会抛出一个错误。我很高兴我找到了答案。看到测试覆盖了多少代码总是很好的

@RobertLevy我正在使用Gulp。我仍在进行一般化工作,计划将内容封装到Yeoman生成器中,以便在我的其他项目中重用相同的堆栈作为引导点。当然,开源也是计划的一部分。虽然在目前的状态下,这个项目还太年轻,有很多东西需要改进,但我也希望看到你的配置,即使是在未完成的状态下。事实上,我认为html报告被破坏了,因为伊斯坦布尔不支持对Coffeescript的报告。看见文本报告之所以有效,是因为它只报告每个文件的百分比,而不像html报告那样通过注释行来强制解决问题。