Impossible d'exécuter la couverture avec Karma

J'essaie d'exécuter la couverture avec le karma, et je reçois l'avertissement: WARN [prétraitement]: Impossible de charger "couverture", il n'est pas enregistré!

Je pensais avoir installé une couverture lorsque j'étais en train d'installer 'npm' -g karma-coverage –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/' } }); }; 

J'ai eu le même [WARN] parce que le plugin 'karma-coverage' n'a pas été défini dans les plugins de la configuration, essayez de voir si l'ajout de celui-ci corrige votre avertissement, et ne savez pas s'il 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 la couverture de la couverture, causée par Istanbul, mon erreur était

[Couverture]: [TypeError: Impossible de définir la propriété 'covered' of undefined]

Après avoir regardé ce qu'était l'istanbul, il s'avérait que les chemins d'accès à certains de mes fichiers js étaient obsolètes dans les préprocesseurs .

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

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

Pour ce qu'il vaut, cela fonctionne bien pour moi. Installé avec:

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

Config 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 }); }; 

Courez avec karma start karma.config.js .

Pour ceux qui utilisent un test grunt pour exécuter le test du karma, et que le problème du problème de couverture n'est pas chargé. Ajoutez les plugins dans votre tâche Gruntfiles.js karama, c'est-à-dire

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

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, alors cela a fonctionné.

J'ai installé la couverture de karma à l'échelle mondiale. Cela a fonctionné pour moi 🙂

 npm install -g karma-coverage 

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

Lors de l'utilisation d'un karma globalement installé, il ne charge pas les plugins installés localement. L'utilisation de node_modules/.bin/karma pour commencer les tests devrait résoudre ce problème.

L'installation du module de couverture dans l'espace de noms global fonctionne également mais n'est probablement pas ce que vous voulez.

Je pense que la solution correcte est

NE PAS installer le karma dans le monde

Installez karma-cli à l'échelle mondiale et installez le karma localement

npm i -g karma-cli

C'est le problème alors, vous devriez utiliser karma-cli à l'échelle mondiale, http://karma-runner.github.io/0.12/intro/installation.html Si vous installez le karma à l'échelle mondiale, il n'utilise pas l'installation locale.

Référence: github