6

Sto cercando di integrare il mio attuale progetto AngularJS con Karma Coverage. Si prega di trovare sotto il package.json e il mio karma-config.AngularJS + Karma + Jasmine + Karma-Copertura: report di copertura vuoto

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'] 
    } 
    }) 
}; 

Quando provo ad eseguire "node_modules/.bin/karma inizio conf/consulente/karma.conf.js" tutti i test vengono eseguiti correttamente, ma il rapporto sulla copertura del karma è completamente vuoto. Ho provato un paio di opzioni ma non riesco a visualizzare i rapporti.

enter image description here

L'output della console non corre il preprocessore per la copertura. Posso vedere che in realtà viene eseguito per html2js.

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: 

Domanda: Sto facendo qualcosa di sbagliato qui? Come rendere la copertura karma per caricare i miei file src js?

risposta

3

Sono stato in grado di risolvere il problema. Era una "s" mancante. Il mio karma config era inizialmente il preprocessore dove si suppone essere il preprocessore . Di seguito riportiamo la corretta configurazione del karma:

'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'] 
    } 
    }) 
    }; 

Il punto più interessante è: che stava lavorando prima con preprocessore per ng-html2js (mio test direttive passavano). Quando ho introdotto la copertura, il problema è iniziato.

4

Manca la proprietà preprocessors e la proprietà coverageReporter.

aggiungere questa sezione al vostro file di configurazione del karma:

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

È possibile modificare la directory di output per coverageReporter quello che vuoi.

+0

In realtà se si guarda la mia configurazione include il preprocessore di copertura. CoverageReporter è un parametro facoltativo che assume come valore predefinito html. Ho provato a includere un output diverso (ad es. Txt) per vedere se funziona, ma non lo fa. –

+0

Ah, hai ragione. Apparentemente non scorrevo abbastanza lontano. Ricordo di aver avuto questo problema con Karma 0.10, ma quando ho aggiornato a 0.12 sembra essere risolto. Forse dargli un giro? – MBielski

+0

Ho provato ad aggiornare per 0.12 o 0.11 e sto affrontando problemi con i test delle direttive. Non riesce a caricare i moduli html (html2js). Qualche idea?! –

Problemi correlati