无法使用Karma,Webpack,重映射覆盖为所有ts文件生成代码覆盖率报告

时间:2018-04-12 00:53:54

标签: unit-testing webpack karma-jasmine code-coverage

我能够使用Karma,Webpack和karma-remap-coverage为代码覆盖设置单元测试框架。但我不明白为什么所有文件(组件,指令,服务)都没有覆盖范围。我有,假设有100个文件,但它只为40-50个文件生成覆盖率报告。

我在这里分享我的配置文件:

Karma.conf.js

var webpackConfig = require('./webpack/webpack.test');
var path = require('path');
module.exports = function (config) {
  var _config = {
    basePath: '',

    frameworks: ['jasmine'],

    files: [
      { pattern: './webpack/karma-test-shim.js', watched: false },
      { pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css', included: true, watched: false }
    ],

    preprocessors: {
      './webpack/karma-test-shim.js': ['webpack', 'sourcemap'],
    },


    webpack: webpackConfig,

    webpackMiddleware: {
      stats: 'errors-only'
    },

    webpackServer: {
      noInfo: true
    },

    coverageReporter: {
      includeAllSources: true,
      type: 'html',
      dir: 'coverage/'
    },
    //   coverageIstanbulReporter: {
    //     reports: ['html', 'lcovonly'],
    //     fixWebpackSourcePaths: true
    //   },

    //  reporters: ['progress', 'coverage-istanbul'],
    coverageReporter: {
      type: 'in-memory'
    },

    remapCoverageReporter: {
      'text-summary': null,
      json: './coverage/coverage.json',
      html: './coverage/html',
      cobertura: './coverage/cobertura.xml'
    },
    reporters: ['progress', 'coverage', 'remap-coverage'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: false,
    browsers: ['Chrome'],
    singleRun: true,
    browserNoActivityTimeout: 20000
  };

  config.set(_config);
};

Webpack.test.js

var webpack = require('webpack');
var helpers = require('./helpers');
var path = require('path');
module.exports = {
    devtool: 'inline-source-map',

    resolve: {
        extensions: ['.ts', '.js']
    },

    module: {
        rules: [
            {
                test: /\.ts$/,
                loaders: [
                    {
                        loader: 'awesome-typescript-loader?sourceMap=false,inlineSourceMap=true',
                        options: { configFileName: 'tsconfig.json' }
                    }, 'angular2-template-loader'
                ]
            },
            {
                test: /\.html$/,
                loader: 'html-loader'

            },
            {
                test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
                loader: 'null-loader'
            },
            {
                test: /\.css$/,
                exclude: helpers.root('app'),
                loader: 'null-loader'
            },
            {
                test: /\.css$/,
                include: helpers.root('app'),
                loader: 'raw-loader'
            },
            {
                enforce: 'post',
                test: /\.ts$/,
                loader: 'istanbul-instrumenter-loader',
                include: helpers.root('app'),
                exclude:  /(node_modules|\.spec\.ts)/
            }
        ]
    }
}

噶试验shim.js

Error.stackTraceLimit = Infinity;

require('core-js/es6');
require('core-js/es7/reflect');

require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/proxy');
require('zone.js/dist/sync-test');
require('zone.js/dist/jasmine-patch');
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');

var appContext = require.context('../testing/specs', true, /\.spec\.ts/);

appContext.keys().forEach(appContext);

var testing = require('@angular/core/testing');
var browser = require('@angular/platform-browser-dynamic/testing');

testing.TestBed.initTestEnvironment(browser.BrowserDynamicTestingModule, browser.platformBrowserDynamicTesting());

使用的NPM依赖项:

    "karma": "^1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "~1.0.1",
    "karma-coverage": "^1.1.1",
    "istanbul-instrumenter-loader": "2.0.0",
    "karma-html-reporter": "^0.2.7",
    "karma-jasmine": "^1.0.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-mocha-reporter": "^2.2.3",
    "karma-remap-coverage": "^0.1.2",
    "karma-sourcemap-loader": "^0.3.7",
    "karma-webpack": "^2.0.1",

非常感谢任何帮助!

0 个答案:

没有答案