2

Ich möchte einen Coverage-Report für meine Typoskript-Quelldateien mit Karma-Coverage erstellen. Meine Komponententests sind in Javascript geschrieben und ich benutze das Jasmine Test Framework.Karma - Wie man auf eine Quellkarte für Typoskript-Coverage zeigt

Meine Ordnerstruktur sieht wie folgt aus:

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/ 

Mein 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 
    }); 
}; 

Derzeit meine Berichterstattung Bericht ausreichend Metriken liefert aber nicht auf die einzelnen Typoskript-Dateien, aber die App zusammen. js.

Ich nehme an, dass ich entweder etwas mit der Preprozessor-Konfiguration vermasselt habe oder dass ich die Quellkarte angeben muss.

Anny Hinweise?

Antwort

6

Die Verwendung von Karma-Istanbul-Remap macht den Trick für mich.

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 
    }); 
}; 
+0

Ist es Quelle aussetzt, oder Sie können nur kompilierten Dateien in der Berichterstattung Bericht anzeigen? – finico