web-dev-qa-db-fra.com

Impossible de couvrir le karma

J'essaie de couvrir le karma et j'obtiens l'avertissement suivant: WARN [pré-traitement]: Impossible de charger la "couverture", elle n'est pas enregistrée!

Je pensais avoir installé la couverture quand j'ai lancé 'npm install -g karma-couverture --save-dev'

Voici mon fichier de configuration:

module.exports = function(config) {
      config.set({
        // base path, that will be used to resolve files and exclude
        basePath: '',

        frameworks: ['jasmine'],

        // list of files / patterns to load in the browser
        files: [
                bunch of files..
        ],

        // list of files to exclude
        exclude: [],

        // use dots reporter, as travis terminal does not support escaping sequences
        // possible values: 'dots', 'progress'
        // CLI --reporters progress
        reporters: ['progress', 'coverage'],

        junitReporter: {
          // will be resolved to basePath (in the same way as files/exclude patterns)
          outputFile: 'test-results.xml'
        },

        // web server port
        // CLI --port 9876
        port: 9876,

        // enable / disable colors in the output (reporters and logs)
        // CLI --colors --no-colors
        colors: true,

        // level of logging
        // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
        // CLI --log-level debug
        logLevel: config.LOG_INFO,

        // enable / disable watching file and executing tests whenever any file changes
        // CLI --auto-watch --no-auto-watch
        autoWatch: true,

        // Start these browsers, currently available:
        // - Chrome
        // - ChromeCanary
        // - Firefox
        // - Opera
        // - Safari (only Mac)
        // - PhantomJS
        // - IE (only Windows)
        // CLI --browsers Chrome,Firefox,Safari
        browsers: ['ChromeCanary'],

        // If browser does not capture in given timeout [ms], kill it
        // CLI --capture-timeout 5000
        captureTimeout: 20000,

        // Auto run tests on start (when browsers are captured) and exit
        // CLI --single-run --no-single-run
        singleRun: true,

        // report which specs are slower than 500ms
        // CLI --report-slower-than 500
        reportSlowerThan: 500,

        // compile coffee scripts
        preprocessors: {
            'someFileName': ['coverage'],
        },

        plugins: [
          'karma-jasmine',
          'karma-chrome-launcher',
          'karma-firefox-launcher',
        ],

    coverageReporter: {
        'type' : 'cobertura',
        'dir': 'coverage/'
    }

  });
};
28
Caren

J'ai le même [WARN] parce que le plugin 'karma-couverture' n'était pas défini dans les plugins de la configuration, essayez de voir si l'ajouter corrige votre avertissement, ne sachant pas si cela résoudra votre problème.

plugins: [
  'karma-jasmine',
  'karma-coverage',
  'karma-chrome-launcher',
  'karma-firefox-launcher',
],

METTRE À JOUR:
J'ai également eu un problème différent lors de l'exécution de la couverture, causé par istanbul, mon erreur était

[couverture]: [TypeError: impossible de définir la propriété 'couverte' de indéfinie]

Après avoir jeté un œil à ce que faisait istanbul, il s’est avéré que les chemins de certains fichiers de mon unité js étaient obsolètes dans les préprocesseurs

Il faisait certains des rapports de couverture, mais il ne générait pas de rapports de couverture approfondis pour tous les fichiers, d'où l'erreur. Une fois que j'ai réparé les chemins, tout était bon.

    preprocessors : {
        '**/app/js/*/*.js' : 'coverage',
        '**/app/js/modules/*/*.js' : 'coverage',
        '**/app/js/services/*/*.js' : 'coverage'
    }, 
47
vivascau

Pour ce que cela vaut, cela fonctionne bien pour moi. Installé avec:

npm install -g karma
npm install -g karma-coverage

Configuration dans karma.config.js:

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: ['app.js','tests.js'],
    preprocessors: { 'app.js': 'coverage' },
    reporters: ['dots', 'coverage'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    captureTimeout: 60000,
    singleRun: false
  });
};

Exécuter avec karma start karma.config.js.

12
RichardTowers

Pour ceux qui utilisent le test de grunt pour exécuter le test de karma et ont le problème du plugin de couverture non chargé. Ajoutez le paramètre plugins à votre tâche karama Gruntfiles.js, c.-à-d.

// Test settings
karma: {
  unit: {
    configFile: 'test/karma.conf.js',
    singleRun: true,
    plugins:[
      'karma-jasmine',
      'karma-coverage',
      'karma-phantomjs-launcher'
    ],
  }
}
9
Zeno Yu

J'ai eu le même problème, jusqu'à ce que j'ai déplacé karma.conf.js dans le même répertoire que package.json, puis cela a fonctionné.

2
gbruins

Ce problème est décrit dans cette réponse .

Lorsque vous utilisez un karma installé globalement, il ne charge pas les plugins installés localement. Utiliser node_modules/.bin/karma pour lancer les tests devrait résoudre ce problème.

L'installation du module de couverture dans le "namespace" global fonctionne également mais ne correspond probablement pas à vos souhaits.

1
coffeemakr

Je pense que la bonne solution est 

NE PAS installer le karma globalement

INSTALLER karma-cli globalement et installer le karma localement

npm i -g karma-cli

C'est le problème alors, vous devriez utiliser karma-cli globalement, http://karma-runner.github.io/0.12/intro/installation.html Si vous installez globalement karma, l'installation locale ne sera pas utilisée.

référence: github

0
maxisam

J'ai installé la couverture de karma globalement cela a fonctionné pour moi :-)

npm install -g karma-coverage
0
LAXIT KUMAR