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/'
}
});
};
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'
},
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
.
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'
],
}
}
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é.
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.
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
J'ai installé la couverture de karma globalement cela a fonctionné pour moi :-)
npm install -g karma-coverage