【问题标题】:Karma - How to point to a source map for typescript coverageKarma - 如何指向 typescript 覆盖的源映射
【发布时间】:2016-08-09 22:00:16
【问题描述】:

我喜欢使用 karma-coverage 为我的打字稿源文件生成覆盖率报告。我的单元测试是用 javascript 编写的,我使用的是 Jasmine 测试框架。

我的文件夹结构如下:

node_modules/
app/
  app.js
  app.js.map
  app.ts
  components/
  controllers/
      SampleController.ts
  directives/
  filters/
  services/

unittests/
  karma.conf.js
  components/
  controllers/
      SampleControllerTest.js
  directives/
  filters/
  services/

我的 karma.conf.js

module.exports = function(config) {
  config.set({
    frameworks: ['jasmine'],
    plugins: [
          'karma-jasmine',
          'karma-ng-html2js-preprocessor',
          'karma-coverage',
          'karma-phantomjs-launcher',
          'karma-sourcemap-loader'

      ],
    preprocessors: {
        '../app/directives/controls/**/*Template.html' : [ 'ng-html2js' ],

            // source files, that you wanna generate coverage for
            // do not include tests or libraries
            // (these files will be instrumented by Istanbul)
        '../app/app.js' : ['sourcemap', 'coverage' ],

    },
    reporters: ['progress', 'coverage'],

    // web server port
    port: 9876,

    coverageReporter: {
          type : 'html',
          dir : 'coverage/'
      },
    // and some other stuff
  });
};

目前我的覆盖率报告提供了足够的指标,但与单个打字稿文件无关,而是 app.js。

我想我要么搞砸了预处理器配置,要么我需要指定源映射。

有什么提示吗?

【问题讨论】:

    标签: javascript typescript karma-runner karma-jasmine karma-coverage


    【解决方案1】:

    使用 karma-istanbul-remap 对我有用。

    karma.conf.js:

    module.exports = function(config) {
      config.set({
        frameworks: ['jasmine'],
        plugins: [
              'karma-jasmine',
              'karma-ng-html2js-preprocessor',
              'karma-coverage',
              'karma-phantomjs-launcher',
              'karma-remap-istanbul'
    
          ],
        preprocessors: {
            '../app/directives/controls/**/*Template.html' : [ 'ng-html2js' ],
    
                // source files, that you wanna generate coverage for
                // do not include tests or libraries
                // (these files will be instrumented by Istanbul)
            '../app/app.js' : ['coverage' ],
    
        },
        reporters: ['progress', 'coverage', 'karma-remap-istanbul'],
    
        // web server port
        port: 9876,
    
        coverageReporter: {
            type : 'json',
            subdir : '.',
            dir : 'coverage/',
            file : 'coverage.json'
        },
        remapIstanbulReporter: {
              src: 'coverage/coverage.json',
              reports: {
                  lcovonly: 'coverage/lcov.info',
                  html: 'coverage/html/report'
              },
              timeoutNotCreated: 5000, // default value
              timeoutNoMoreFiles: 1000 // default value
        },
        // and some other stuff
      });
    };
    

    【讨论】:

    • 是暴露源码还是只能查看覆盖率报告中的编译文件?
    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 2020-08-21
    • 2018-07-20
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多