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

标签 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:yes }
   { pattern:'bin/tests.js', served:yes: included:no }
]

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

我正在使用 karma-coverage npm 包,还有这个:
preprocessors: 'bin/public/client/app.js':['coverage']

reporters: ['progress','coverage']

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

理想情况下,我必须收集 browserify 生成的源映射,并对它们运行覆盖,但是 browserify 将源映射嵌入到 .js 文件中。使用 karma-sourcemap-loader让我在调试时查看测试的原始 CoffeeScript 文件(由于某种原因,它仅在 ChromeCanary 中有效,但它有效)

我试着做preprocessors: 'src/client/**/*.coffee':['coverage'] ,但这根本不会产生任何统计数据,说“没有数据可显示”

你有什么想法?

更新:

我通过运行 browserify-istanbul 计算出在 coffeeify 之后立即转换这给了我这样的漂​​亮图表:enter image description here

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

更新:

哦,我必须提供咖啡文件,而不是 javascript:
preprocessors : {
    'bin/tests.js': ['sourcemap']
    'src/client/**/*.coffee': ['coverage']
}

最佳答案

似乎我回答了我自己的问题。此外,karma-coverage 的当前版本似乎也存在错误。 - coverageReporter.type 时会抛出错误是 html (默认为 html)。我很高兴我弄明白了。看到测试覆盖了多少代码总是很高兴

关于coffeescript - 使用 Karma、browserify 和 Coffeescript 测试覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24944541/

相关文章:

ruby-on-rails - rails : CoffeeScript is not defined on new Application

CoffeeScript:使用 instanceof 与 Class.constructor.name

javascript - CoffeeScript 对 splat 和这个实现的好奇心

java - Seam 和 Mock 有什么区别?

javascript - Jasmine ,$q 未定义

javascript - 使用 karma 和 jasmine 获取 json 文件的 ajax 自定义实现调用的 404

javascript - 如何利用 jQuery 来检测带有动态生成的 ID 的选择标签上的变化并更改选择的选项

c++ - 可以合并代码覆盖率结果 (VC++)

command-line - PHPUnit:在命令行中运行时,显示代码覆盖率?

javascript - mocha karma 测试运行程序出错