我正在尝试使用Webpack,Babel和Karma设置一个项目,但是我有一个问题是正确配置我的源文件的测试覆盖率。
我正在使用Webpack捆绑和转换我的javascript文件,使用babel-loader和Karma与karma-webpack来运行我的测试。
问题是我不能将所有源文件都包含在coverage中,只包括我在测试文件中导入的文件。我正在使用babel-plugin-istanbul来检测我的es2015代码。
这是我的webpack配置文件:
const { resolve } = require('path');
module.exports = {
context: __dirname,
entry: './main.js',
output: {
filename: 'bundle.js',
path: resolve(__dirname, 'dist'),
},
resolve: {
root: __dirname,
extensions: ['', '.js', '.jsx'],
alias: {
components: resolve(__dirname, 'src/components'),
},
},
devtool: 'eval-source-map',
module: {
loaders: [
{
test: /\.jsx?$/,
loader: 'babel',
exclude: /node_modules/,
},
],
},
};
我的业力配置文件:
const webpackConfig = require('./webpack.config');
process.env.BABEL_ENV = 'test';
module.exports = function karmaConfig(config) {
config.set({
basePath: './',
frameworks: ['mocha', 'chai', 'sinon'],
files: ['specs/**/*.spec.js'],
plugins: [
'karma-webpack',
'karma-mocha',
'karma-chai',
'karma-sinon',
'karma-spec-reporter',
'karma-coverage',
'karma-spec-reporter',
'karma-phantomjs-launcher',
],
preprocessors: {
'specs/**/*.spec.js': ['webpack'],
'src/**/*.+(js|jsx)': ['webpack'],
},
reporters: ['spec', 'coverage'],
coverageReporter: {
dir: 'coverage',
reporters: [
{ type: 'lcov', subdir: 'reporter-lcov' },
{ type: 'text-summary' },
],
},
webpack: webpackConfig,
webpackMiddleware: {
noInfo: true,
},
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['PhantomJS'],
singleRun: false,
concurrency: Infinity,
});
};
这是我的.babelrc
文件,我配置了babel-plugin-istanbul:
{
"presets": ["es2015", "react"],
"env": {
"test": {
"plugins": [
["istanbul", { "exclude": ["**/*.spec.js"] }]
]
}
}
}
我错过了什么吗?
提前致谢!