我有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 }); };
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。