Ste*_*ven 7 code-coverage browserify ecmascript-6 karma-runner karma-coverage
我有Browserify,6to5ify和Karma玩得很好,成功运行我的规格.然而,当我添加代码覆盖时,事情就会发生变化.我尝试了几种方法:
browserify-istanbul变换添加到我的karma.conf.js.但是,这会导致它尝试在我的spec文件上运行检测,它也会出现.coverage在我的源文件上运行预处理器.但是因为istanbul(偶数douglasduteil/karma-coverage#next)没有读取我的6to5ifybrowserify转换,所以它会在它尝试解析的第一个文件(因为该import语句)上立即崩溃,或者当我使用karma-coverage#next时,它不会尊重browser映射我的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
});
};
Run Code Online (Sandbox Code Playgroud)
我有点失去了如何让这一切都在一起工作.我尝试按照这些说明操作,但这不起作用,因为它没有跟随我的browser节点package.json.任何帮助将不胜感激.
Ste*_*ven 13
所以,显然我需要browserify-istanbul,我需要browserifyconfigure钩子,如下所示:
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", "mocha", "chai-sinon"],
browserify: {
debug: false,
extensions: [".js", ".hbs"],
configure: function(bundle){
bundle.on('prebundle', function(){
bundle
.transform(to5ify)
.transform(hbsfy)
.transform(cover(coverOptions));
});
}
},
reporters: ["dots", "osx", "junit", "coverage"],
coverageReporter: {
type: "text"
},
junitReporter: {
outputFile: "spec/reports/test-results.xml"
},
preprocessors: {
"spec/**/*": ["browserify"]
},
browsers: ["PhantomJS"],
files: ["spec/unit/**/*Spec.js"],
logLevel: "LOG_DEBUG",
autoWatch: true
});
};
Run Code Online (Sandbox Code Playgroud)