6

Ich versuche mein aktuelles AngularJS-Projekt mit Karma Coverage zu integrieren. Unten finden Sie die package.json und meine karma-config.AngularJS + Karma + Jasmine + Karma-Coverage: Leeres Coverage-Bericht

Package.json

{ 
    "name": "Project", 
    "description": "Description", 
    "repository": "https://www.repo.com", 
    "devDependencies": { 
    "karma": "~0.10.9", 
    "karma-junit-reporter": "~0.2.1", 
    "karma-jasmine": "~0.1.5", 
    "karma-ng-scenario": "~0.1", 
    "karma-script-launcher": "~0.1.0", 
    "karma-chrome-launcher": "~0.1.3", 
    "karma-firefox-launcher": "~0.1.3", 
    "karma-phantomjs-launcher": "~0.1.4", 
    "karma-ng-html2js-preprocessor": "~0.1", 
    "karma-coverage": "~0.1" 
    } 
} 

Karma Config

'use strict'; 

module.exports = function (config) { 
    config.set({ 
    basePath: '../../public/', 
    logLevel: config.LOG_DEBUG, 
    frameworks: ['jasmine'], 
    singleRun: true, 
    files: [ 
     'libs/jquery/jquery-1.9.0.js', 
     'libs/angular/1.2.10/angular.js', 
     'libs/angular/**/*.js', 
     'libs/angular/*.js', 
     'libs/vendor/*.js', 
     'libs/test/**/*.js', 

     // fixtures 
     {pattern: 'test/mock-data/helloworld/*.json', watched: true, served: true, included: false}, 

     'apps/helloworld/**/*.js', 
     'apps/helloworld/*.js', 
     'test/helloworld/unit/**/*.js', 
     'test/helloworld/*.js', 
     'views/helloworld/directives/*.html' 
    ], 

    exclude: [ 
     'libs/angular/1.2.10/*.min.js', 
     'libs/angular/angular-animate.js' 
    ], 

    browsers: ['PhantomJS'], 

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

    preprocessor: { 
     'apps/helloworld/**/*.js': ['coverage'], 
     '*.html': ['ng-html2js'] 
    } 
    }) 
}; 

Wenn ich versuche, "node_modules/.bin/Karma Start conf/Berater/karma.conf.js" zu laufen Alle Tests werden erfolgreich ausgeführt, aber der Karma-Coverage-Bericht ist vollständig leer. Ich habe ein paar Optionen ausprobiert, aber ich kann die Berichte nicht erscheinen lassen.

enter image description here

Die Konsolenausgabe läuft nie den Präprozessor für die Abdeckung. Ich kann sehen, dass es tatsächlich für html2js läuft.

DEBUG [plugin]: Loading karma-* from /Users/alansouza/workspace/helloworld/node_modules 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-chrome-launcher. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-coffee-preprocessor. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma- coverage. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-firefox-launcher. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-html2js-preprocessor. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-jasmine. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-junit-reporter. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-ng-html2js-preprocessor. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-ng-scenario. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-phantomjs-launcher. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-requirejs. 
DEBUG [plugin]: Loading plugin /Users/alansouza/workspace/helloworld/node_modules/karma-script-launcher. 
INFO [karma]: Karma v0.10.10 server started at http://localhost:9876/ 
INFO [launcher]: Starting browser PhantomJS 
DEBUG [launcher]: Creating temp dir at /var/folders/8_/vw105h0j3vn66cgzttktdjmm0000gn/T/karma-29140367 
DEBUG [launcher]: /Users/alansouza/workspace/helloworld/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom/bin/phantomjs /var/folders/8_/vw105h0j3vn66cgzttktdjmm0000gn/T/karma-29140367/capture.js 
DEBUG [watcher]: Excluded file "/Users/alansouza/workspace/helloworld/public/libs/angular/1.2.10/angular-animate.min.js" 
DEBUG [watcher]: Excluded file "/Users/alansouza/workspace/helloworld/public/libs/angular/1.2.10/angular-resource.min.js" 
DEBUG [watcher]: Excluded file "/Users/alansouza/workspace/helloworld/public/libs/angular/1.2.10/angular-route.min.js" 
DEBUG [watcher]: Excluded file "/Users/alansouza/workspace/helloworld/public/libs/angular/1.2.10/angular-sanitize.min.js" 
DEBUG [watcher]: Excluded file "/Users/alansouza/workspace/helloworld/public/libs/angular/1.2.10/angular.min.js" 
DEBUG [preprocessor.html2js]: Processing "/Users/alansouza/workspace/helloworld/public/views/advisor/directives/av-product-total.html". 
DEBUG [preprocessor.html2js]: Processing "/Users/alansouza/workspace/helloworld/public/views/advisor/directives/av-product.html". 
DEBUG [preprocessor.html2js]: Processing "/Users/alansouza/workspace/helloworld/public/views/advisor/directives/av-select-product.html". 
DEBUG [watcher]: Resolved files: 

Frage: Mache ich etwas falsch hier? Wie mache ich Karma Coverage um meine src js Dateien zu laden?

Antwort

3

Ich konnte das Problem beheben. Es war ein fehlendes "s". Mein Karma Config war ursprünglich Preprozessor wo soll Preprozessoren sein. Hier finden Sie die richtige Karma config:

'use strict'; 

    module.exports = function (config) { 
    config.set({ 
    basePath: '../../public/', 
    logLevel: config.LOG_DEBUG, 
    frameworks: ['jasmine'], 
    singleRun: true, 
    files: [ 
     'libs/jquery/jquery-1.9.0.js', 
     'libs/angular/1.2.10/angular.js', 
     'libs/angular/**/*.js', 
     'libs/angular/*.js', 
     'libs/vendor/*.js', 
     'libs/test/**/*.js', 

     // fixtures 
     {pattern: 'test/mock-data/helloworld/*.json', watched: true, served: true, included: false}, 

     'apps/helloworld/**/*.js', 
     'apps/helloworld/*.js', 
     'test/helloworld/unit/**/*.js', 
     'test/helloworld/*.js', 
     'views/helloworld/directives/*.html' 
    ], 

    exclude: [ 
     'libs/angular/1.2.10/*.min.js', 
     'libs/angular/angular-animate.js' 
    ], 

    browsers: ['PhantomJS'], 

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

    preprocessors: { 
     'apps/helloworld/**/*.js': ['coverage'], 
     '*.html': ['ng-html2js'] 
    } 
    }) 
    }; 

Der interessanteste Punkt hier ist: es funktionierte, bevor sie mit Präprozessor für ng-html2js (meine Richtlinien Tests wurden vorbei). Als ich die Berichterstattung einführte, begann das Problem zu passieren.

4

Sie vermissen die preprocessors Eigenschaft und die coverageReporter Eigenschaft.

diesen Abschnitt, um dein Karma-Konfigurationsdatei hinzufügen:

preprocessors: { 
     'apps/helloworld/**/*.js':['coverage'] 
    }, 
coverageReporter:{ 
     type:'html', 
     dir:'C:/Dev/coverage/' 
    }, 

Sie das Verzeichnis coverageReporter Ausgabe ändern können, was auch immer Sie wollen.

+0

Eigentlich, wenn Sie schauen, enthält meine Konfig den Coverage Preprozessor. Der CoverageReporter ist ein optionaler Parameter, der standardmäßig auf HTML gesetzt ist. Ich habe versucht, eine andere Ausgabe (z. B. txt) einzuschließen, um zu sehen, ob es funktioniert, aber es nicht tut. –

+0

Ah, du hast Recht. Ich habe anscheinend nicht weit genug nach unten geblättert. Ich erinnere mich an dieses Problem mit Karma 0.10, aber als ich auf 0.12 aktualisiert habe, scheint es behoben zu sein. Vielleicht einen Wirbel machen? – MBielski

+0

Ich habe versucht, für 0.12 oder 0.11 zu aktualisieren, und ich habe Probleme mit Direktivtests. Es lädt die HTML-Module (html2js) nicht. Irgendwelche Ideen?! –