我正在尝试使用 Webpack、Babel 和 Karma 设置项目,但在正确配置源文件的测试覆盖率时遇到问题。
我正在使用 Webpack 捆绑和转译我的 javascript 文件,使用 babel-loader 和带有 karma-webpack 的 Karma 来运行我的测试。
问题是我不能将我所有的源文件都包含在覆盖范围内,只有我在测试文件中导入的那些。我正在使用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"] }]
]
}
}
}
我错过了什么吗?
提前致谢!