Javascript 获取预编译源代码的Karma代码覆盖率
我使用Karma运行测试,使用webpack捆绑文件,使用babel进行es6->es5转换。我已经运行了测试并生成了代码覆盖率,但是代码覆盖率数字是传输后的源文件的。是否仍然需要为原始源文件获取代码覆盖率 我试着使用Javascript 获取预编译源代码的Karma代码覆盖率,javascript,karma-runner,webpack,babeljs,karma-coverage,Javascript,Karma Runner,Webpack,Babeljs,Karma Coverage,我使用Karma运行测试,使用webpack捆绑文件,使用babel进行es6->es5转换。我已经运行了测试并生成了代码覆盖率,但是代码覆盖率数字是传输后的源文件的。是否仍然需要为原始源文件获取代码覆盖率 我试着使用sourcemap预处理器,但它似乎没有任何作用。我需要把它添加到某个网页配置中吗 karma.conf.js config.set({ browsers: ['Chrome'], //run in Chrome files: [ 'src/**/
sourcemap
预处理器,但它似乎没有任何作用。我需要把它添加到某个网页配置中吗
karma.conf.js
config.set({
browsers: ['Chrome'], //run in Chrome
files: [
'src/**/*-test.js'
],
frameworks: ['mocha'], //use the mocha test framework
plugins: [
'karma-chrome-launcher',
'karma-mocha',
'karma-sourcemap-loader',
'karma-webpack',
'karma-coverage',
],
preprocessors: {
'src/**/*-test.js': ['webpack']
},
reporters: ['dots', 'coverage'], //report results in this format
coverageReporter: {
reporters: [{
type: 'text-summary',
}, {
type: 'html',
dir: 'build/reports/coverage'
}]
},
singleRun: true, //just run once by default
webpack: {
node: {
fs: 'empty'
},
// Instrument code that isn't test or vendor code.
module: {
loaders: [{
test: /\.js?$/,
include: path.join(__dirname, 'src/js'),
loader: 'babel?stage=0'
}],
postLoaders: [{
test: /\.js$/,
exclude: /(test|node_modules)\//,
loader: 'istanbul-instrumenter'
}]
}
},
webpackMiddleware: {
noInfo: true //please don't spam the console when running in karma!
}
});
以下配置工作正常: karma.conf.js package.json
您可以使用它。当我尝试添加isparta作为预加载程序时(无论是否使用babel属性),它不再传输
import
语句上的代码和错误。它说用它来代替标准的巴别塔加载器,所以我不确定我做错了什么。这对我来说非常有用。比我遇到的任何事情都简单。这也是我见过的唯一一个不使用“替代Karma配置”的例子,其中require.context
用于创建单个入口点。我还发现,在处理大型代码库时,此解决方案比require.context
选项工作得更好。谢谢,在花了几个小时尝试其他解决方案后,这一个终于给了我如何让它工作的想法。我正在使用@djskinner提到的“替代配置”,它也可以使用。这在Webpack2下不太可能起作用。我得到的isparta不是加载程序
var path = require('path');
module.exports = function(config) {
config.set({
browsers: [ 'Chrome' ], //run in Chrome
files: [
'src/**/*-test.js'
],
frameworks: [ 'mocha' ], //use the mocha test framework
preprocessors: {
'src/**/*-test.js': [ 'webpack' ]
},
reporters: [ 'dots', 'coverage' ], //report results in this format
coverageReporter: {
reporters: [
{
type: 'text-summary'
},
{
type: 'html',
dir: 'build/reports/coverage'
}
]
},
singleRun: true, //just run once by default
webpack: {
node : {
fs: 'empty'
},
// Instrument code that isn't test or vendor code.
module: {
preLoaders: [
{ test: /\.js$/, loader: 'isparta', include: path.join(__dirname, 'src/js') }
],
loaders: [
{
test: /\.js$/,
include: path.join(__dirname, 'src/js'),
loader: 'babel?stage=0'
}
]
}
},
webpackMiddleware: {
noInfo: true //please don't spam the console when running in karma!
}
});
};
{
"devDependencies": {
"babel-core": "^5.8.22",
"babel-loader": "^5.3.2",
"chai": "^3.2.0",
"isparta-loader": "^0.2.0",
"karma": "^0.13.9",
"karma-chrome-launcher": "^0.2.0",
"karma-coverage": "^0.5.0",
"karma-mocha": "^0.2.0",
"karma-webpack": "^1.7.0",
"mocha": "^2.2.5",
"webpack": "^1.11.0"
}
}