【问题标题】:Test coverage with Karma, browserify and Coffeescript使用 Karma、browserify 和 Coffeescript 测试覆盖率
【发布时间】:2014-09-16 15:32:47
【问题描述】:

我在添加测试代码覆盖率时遇到了麻烦,我正在使用 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'],但根本没有统计数据显示“没有数据可显示”

你有什么想法吗?

更新:

我想通了在coffeeify 之后运行browserify-istanbul 转换,这给了我这样的漂​​亮图表:

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

更新:

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

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

【问题讨论】:

    标签: coffeescript code-coverage karma-runner browserify istanbul


    【解决方案1】:

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

    【讨论】:

    • @RobertLevy 我正在使用 Gulp。我仍在努力概括事物,计划可能将事物包装到 Yeoman 生成器中,这样我就可以在我的其他项目中重用相同的堆栈作为引导点。当然,将其开源是计划的一部分。尽管在目前的状态下,项目还太年轻,有很多东西需要完善
    • 我也想看看你的配置,即使是在未抛光的状态下。
    • 实际上,我认为 html 报告已损坏,因为伊斯坦布尔不支持在 Coffeescript 上报告。请参阅groups.google.com/forum/#!topic/karma-users/QZW3ClF_1r4github.com/gotwarlost/istanbul/issues/43github.com/karma-runner/karma-coverage/issues/56。文本报告之所以有效,是因为它只报告每个文件的百分比,而不是像 html 报告那样通过注释行来强制问题。
    猜你喜欢
    • 2019-01-18
    • 2017-11-08
    • 2018-03-04
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多