不能使用karma,webpack和babel将我的源文件包含到coverage中

时间:2016-09-01 22:43:40

标签: webpack karma-runner babeljs istanbul karma-webpack

我正在尝试使用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"] }]
      ]
    }
  }
}

我错过了什么吗?

提前致谢!

0 个答案:

没有答案