我在添加测试代码覆盖方面遇到了麻烦,我正在使用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']
实际上确实创建了覆盖率统计文件,但这些文件是完全错误的,因为它会使从node_modules带来的浏览器部分变得严重(因为我没有测试来覆盖那些)
理想情况下,我必须收集browserify生成的源映射,并针对这些映射运行覆盖,但browserify将源映射嵌入到.js文件中。使用karma-sourcemap-loader
让我看到测试的原始coffeescript文件,在调试时(由于某种原因,它仅适用于ChromeCanary,但它可以正常工作)
我尝试preprocessors: 'src/client/**/*.coffee':['coverage']
,但是没有任何统计信息说“没有要显示的数据”
你有什么想法吗?
UPD:
我认为在browserify-istanbul
之后立即运行coffeeify
转换,这给了我很好的图表:
现在,我需要以某种方式从中移除app.js,因为它真的没关系,真的很困惑
更新:
哦,而不是javascript我必须提供咖啡文件:
preprocessors : {
'bin/tests.js': ['sourcemap']
'src/client/**/*.coffee': ['coverage']
}
答案 0 :(得分:3)
似乎我回答了我自己的问题。此外,似乎当前版本的karma-coverage
中存在一个错误 - 当coverageReporter.type
为html
时(默认情况下为html),它会引发错误。我很高兴我发现了它。总是很高兴看到测试涵盖了多少代码