代码覆盖 – 让Karma,6to5ify和伊斯坦布尔打球

我有browserify,6to5ify和Karma玩得很好,成功运行我的规格.然而,当我添加代码覆盖时,情况就会发生变化.我尝试了几种方法

>将browserify-istanbul变换添加到我的karma.conf.js.但是,这导致它尝试在我的spec文件上运行检测,它也会出现.
>在源文件上运行coverage预处理器.但是因为istanbul(甚至是douglasduteil / karma-coverage#next)没有读取我的6to5ify browserify转换,所以它会立即崩溃它试图解析的第一个文件(因为import语句),或者当我使用karma-coverage #next时,它不尊重我的package.json中的浏览器映射(移动项目,将Backbone映射到Exoskeleton).

现在我的karma.conf.js看起来像这样:

module.exports = function(karma){
  karma.set({
    frameworks: ["browserify","mocha","chai-sinon"],browserify: {
      debug: true,extensions: [".js",".hbs"],transform: ["6to5ify","hbsfy"]
    },reporters: ["dots","osx","junit","coverage"],coverageReporter: {
      type: "text"
    },junitReporter: {
      outputFile: "spec/reports/test-results.xml"
    },preprocessors: {
      "src/javascript/**/*": ["coverage"],"spec/**/*": ["browserify"]
    },browsers: ["PhantomJS"],files: ["spec/unit/**/*Spec.js"],logLevel: "LOG_DEBUG",autoWatch: true
  });
};

我有点失去了如何让这一切都在一起工作.我试过跟随these instructions,但这不起作用,因为它没有跟随我在package.json中的浏览器节点.任何帮助将不胜感激.

解决方法

所以,显然我需要browserify-istanbul,我需要browserify配置挂钩,如下所示:
var to5ify = require('6to5ify');
var hbsfy = require('hbsfy');
var cover = require('browserify-istanbul');

var coverOptions = {
  ignore: ['**/*Spec.js','**/lib/*.js','**/fixtures/*.hbs'],defaultIgnore: true
}

module.exports = function(karma){
  karma.set({
    frameworks: ["browserify",browserify: {
      debug: false,configure: function(bundle){
        bundle.on('prebundle',function(){
          bundle
            .transform(to5ify)
            .transform(hbsfy)
            .transform(cover(coverOptions));
        });
      }
    },preprocessors: {
      "spec/**/*": ["browserify"]
    },autoWatch: true
  });
};

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...