カルマでカバレッジを実行しようとしていますが、警告が表示されます。WARN[前処理]:「カバレッジ」をロードできません。登録されていません!
'npm install -g karma-coverage --save-dev'を実行したときにカバレッジをインストールしたと思いました
ここに私の設定ファイルがあります:
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/'
}
});
};
プラグイン 'karma-coverage'が設定のプラグイン内で定義されていないため、同じ[WARN]を取得しました。追加すると警告が修正されるかどうかを確認してください。
plugins: [
'karma-jasmine',
'karma-coverage',
'karma-chrome-launcher',
'karma-firefox-launcher',
],
更新:
また、イスタンブールを原因とするカバレッジの実行時に別の問題が発生しました。私のエラーは
[coverage]:[TypeError:未定義のプロパティ 'covered'を設定できません]
Istanbulが何をしていたかを見てみると、jsユニットファイルの一部へのパスがpreprocessorsで古くなっていたことがわかりました。
カバレッジレポートの一部を実行していましたが、すべてのファイルの詳細なカバレッジレポートを生成していなかったため、エラーが発生しました。パスを修正したら、すべてがうまくいきました。
preprocessors : {
'**/app/js/*/*.js' : 'coverage',
'**/app/js/modules/*/*.js' : 'coverage',
'**/app/js/services/*/*.js' : 'coverage'
},
それが価値があることについては、これは私のためにうまくいきます。インストール済み:
npm install -g karma
npm install -g karma-coverage
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
});
};
karma start karma.config.js
で実行します。
グラントテストを使用してカルマテストを実行し、カバレッジプラグインがロードされていないという問題がある場合。 plugins
設定をGruntfiles.js karamaタスクに追加してください。
// Test settings
karma: {
unit: {
configFile: 'test/karma.conf.js',
singleRun: true,
plugins:[
'karma-jasmine',
'karma-coverage',
'karma-phantomjs-launcher'
],
}
}
Karma.conf.jsをpackage.jsonと同じディレクトリに移動するまで、私は同じ問題を抱えていました。
この問題は this answer で説明されています。
グローバルにインストールされたカルマを使用する場合、ローカルにインストールされたプラグインはロードされません。 node_modules/.bin/karma
を使用してテストを開始すると、この問題を解決できます。
グローバルな「名前空間」へのカバレッジモジュールのインストールも機能しますが、おそらくあなたが望むものではありません。
正しい解決策は
カルマをグローバルにインストールしない
Karma-cliをグローバルにインストールし、ローカルにkarmaをインストールします
npm i -g karma-cli
それが問題です。karma-cliをグローバルに使用する必要があります。 http://karma-runner.github.io/0.12/intro/installation.html ローカルインストール。
参照: github
私はカルマカバレッジをグローバルにインストールしました:-)
npm install -g karma-coverage