7

Ho Browserify, 6to5ify e Karma per giocare con successo, con successo le mie specifiche. Quando aggiungo la copertura del codice, tuttavia, le cose vanno a sud. Ho provato diversi approcci:Ottenere Karma, 6to5ify e Istanbul per giocare a pallone

  • Aggiungi browserify-istanbul trasformazione per i miei karma.conf.js. Tuttavia, questo si traduce in un tentativo di eseguire strumentazione sui miei file spec come pure apparirebbe.
  • Eseguire il preprocessore coverage sui miei file di origine. Ma poiché istanbul (anche douglasduteil/karma-coverage#next) non legge la mia trasformazione di browser 6to5ify, questo si blocca immediatamente sul primo file che tenta di analizzare (a causa dell'istruzione import), o quando uso karma-coverage # dopo, non rispetta la mappatura browser nel mio package.json (progetto mobile, mappato Backbone in Exoskeleton).

questo momento il mio karma.conf.js assomiglia a questo:

module.exports = function(karma){ 
    karma.set({ 
    frameworks: ["browserify", "mocha", "chai-sinon"], 
    browserify: { 
     debug: true, 
     extensions: [".js", ".hbs"], 
     transform: ["6to5ify", "hbsfy"] 
    }, 
    reporters: ["dots", "osx", "junit", "coverage"], 
    coverageReporter: { 
     type: "text" 
    }, 
    junitReporter: { 
     outputFile: "spec/reports/test-results.xml" 
    }, 
    preprocessors: { 
     "src/javascript/**/*": ["coverage"], 
     "spec/**/*": ["browserify"] 
    }, 
    browsers: ["PhantomJS"], 
    files: ["spec/unit/**/*Spec.js"], 
    logLevel: "LOG_DEBUG", 
    autoWatch: true 
    }); 
}; 

Sono un po 'perso come ottenere questo lavorando tutti insieme. Ho provato a seguire these instructions, ma non ha funzionato perché non ha seguito il mio nodo browser in package.json. Qualsiasi aiuto sarebbe molto apprezzato.

risposta

13

Quindi, a quanto pare ho bisogno browserify-istanbul, e ho bisogno del configure gancio browserify, in questo modo:

var to5ify = require('6to5ify'); 
var hbsfy = require('hbsfy'); 
var cover = require('browserify-istanbul'); 

var coverOptions = { 
    ignore: ['**/*Spec.js', '**/lib/*.js', '**/fixtures/*.hbs'], 
    defaultIgnore: true 
} 

module.exports = function(karma){ 
    karma.set({ 
    frameworks: ["browserify", "mocha", "chai-sinon"], 
    browserify: { 
     debug: false, 
     extensions: [".js", ".hbs"], 
     configure: function(bundle){ 
     bundle.on('prebundle', function(){ 
      bundle 
      .transform(to5ify) 
      .transform(hbsfy) 
      .transform(cover(coverOptions)); 
     }); 
     } 
    }, 
    reporters: ["dots", "osx", "junit", "coverage"], 
    coverageReporter: { 
     type: "text" 
    }, 
    junitReporter: { 
     outputFile: "spec/reports/test-results.xml" 
    }, 
    preprocessors: { 
     "spec/**/*": ["browserify"] 
    }, 
    browsers: ["PhantomJS"], 
    files: ["spec/unit/**/*Spec.js"], 
    logLevel: "LOG_DEBUG", 
    autoWatch: true 
    }); 
};