使用Karma的Angular 2测试覆盖率 - 无法找到源地图

时间:2017-06-20 13:31:07

标签: angular typescript testing code-coverage karma-coverage

我使用Karma Remap Coverage在我的应用程序中使用Karma设置了测试覆盖率,方法是对 karma.config.js 文件进行更改,如下所示:

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular/cli'],
    plugins: [
      require('karma-jasmine'),
      require('karma-coverage'),
      require('karma-chrome-launcher'),
      require('karma-remap-istanbul'),
      require('@angular/cli/plugins/karma')
    ],
    files: [{
      pattern: './src/test.ts',
      watched: false
    }],
    preprocessors: {
      './src/test.ts': ['@angular/cli']
    },
    mime: {
      'text/x-typescript': ['ts', 'tsx']
    },
    remapIstanbulReporter: {
      reports: {
        html: 'coverage',
        lcovonly: './coverage/coverage.lcov'
      }
    },
    remapCoverageReporter: {
      'text-summary': null,
      html: './coverage/html',
      cobertura: './coverage/cobertura.xml'
    },
    angularCli: {
      config: './angular-cli.json',
      environment: 'dev',
      codeCoverage: true
    },
    coverageReporter: {
      addNodeGlobals: true,
      instrumenterOptions: {
        istanbul: { noCompact: true }
      },
      reporters: [
        { type: 'json' },
      ],
      html: './coverage',
      dir: './coverage/',
      subdir: (browser) => {
        return browser.toLowerCase().split(/[ /-]/)[0]; // returns 'chrome'
      },
    },
    reporters: config.angularCli && config.angularCli.codeCoverage ? ['progress', 'coverage', 'karma-remap-istanbul'] : ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });
};

我运行命令: ng test - code-coverage 来运行测试套件并生成覆盖范围。成功运行测试后,我收到错误:

  

错误:找不到源地图:“path / to / module / file.ts”

我的应用程序中的地图文件不在“path / to / module /”中,而是由 ng build 命令生成的地图存储为 main.bundle.js .map 位于“./dist/”目录中。

那就是说,我正在获取一个描述正确文件结构的覆盖仪表板,但我无法查看相关文件(可能是因为它们无法从typescript转换为es5)。

如何配置 karma-remap-istanbul 以按照上述配置定位地图,以便我可以将覆盖详细信息作为整个应用程序的html获取。

0 个答案:

没有答案