web-dev-qa-db-fra.com

Comment exclure des fichiers du rapport de couverture du code karma?

Existe-t-il un moyen d'exclure des fichiers du rapport de couverture de code pour le programme de couverture de karma https://github.com/karma-runner/karma-coverage ?

30
Edgar Martinez

Vous pouvez utiliser plusieurs techniques ici: karma utilise minimatch globs pour les chemins de fichiers et l'utilisation peut en profiter pour exclure certains chemins.

Comme première solution, je dirais essayer d'ajouter uniquement les chemins du fichier à prétraiter avec la couverture:

// karma.conf.js
module.exports = function(config) {
  config.set({
    files: [
      'src/**/*.js',
      'test/**/*.js'
    ],

    // coverage reporter generates the coverage
    reporters: ['progress', 'coverage'],

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

    // optionally, configure the reporter
    coverageReporter: {
      type : 'html',
      dir : 'coverage/'
    }
  });
};

Celui ci-dessus est l'exemple par défaut dans la couverture de karma et il montre que seuls les fichiers du dossier src seront prétraités.

Une autre astuce peut être d'utiliser le ! opérateur pour exclure des chemins spécifiques:

preprocessors: {
  // source files, that you wanna generate coverage for
  // do not include tests or libraries
  'src/**/!(*spec|*mock).js': ['coverage']
},

Celui ci-dessus fait que la couverture s'exécute uniquement sur les fichiers Javascript qui ne se terminent pas par spec.js ou mock.js. La même chose peut être faite pour les dossiers:

preprocessors: {
  // source files, that you wanna generate coverage for
  // do not include tests or libraries
  'src/**/!(spec|mock)/*.js': ['coverage']
},

Ne traitez aucun fichier Javascript dans le dossier spec ou mock.

45
MarcoL