Не удалось запустить Coverage with Karma
Я пытаюсь запустить покрытие с кармой, и я получаю предупреждение: WARN [preprocess]: Невозможно загрузить "покрытие", он не зарегистрирован!
Я думал, что я установил покрытие, когда я запускал 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/'
}
});
};
Ответы
Ответ 1
Я получил то же самое [WARN], потому что плагин "karma-coverage" не был определен внутри плагинов конфигурации, попробуйте, добавляет ли он его предупреждение, не уверен, что он исправит вашу полную проблему.
plugins: [
'karma-jasmine',
'karma-coverage',
'karma-chrome-launcher',
'karma-firefox-launcher',
],
UPDATE:
У меня также была другая проблема при запуске покрытия, вызванного istanbul, моя ошибка была
[охват]: [TypeError: невозможно установить свойство "покрыто" undefined]
Посмотрев, что делает istanbul, выяснилось, что пути к некоторым из моих js файлов были устаревшими в препроцессорах .
Он занимался некоторыми отчетами о покрытии, но не генерировал отчеты о глубоком освещении для всех файлов, следовательно, это ошибка. Как только я исправил пути, все было хорошо.
preprocessors : {
'**/app/js/*/*.js' : 'coverage',
'**/app/js/modules/*/*.js' : 'coverage',
'**/app/js/services/*/*.js' : 'coverage'
},
Ответ 2
Для чего это стоит, это работает отлично для меня. Установлен с помощью:
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
.
Ответ 3
Для тех, кто использует тест grunt для запуска теста кармы, и проблема с загрузкой плагина не загружена. Добавьте параметр plugins
в задание карантин Gruntfiles.js, т.е.
// Test settings
karma: {
unit: {
configFile: 'test/karma.conf.js',
singleRun: true,
plugins:[
'karma-jasmine',
'karma-coverage',
'karma-phantomjs-launcher'
],
}
}
Ответ 4
У меня была такая же проблема, пока я не переместил karma.conf.js в тот же каталог, что и package.json, после чего он работал.
Ответ 5
Я установил покрытие кармы во всем мире, это сработало для меня: -)
npm install -g karma-coverage
Ответ 6
Эта проблема описана в этом ответе.
При использовании глобальной кармы он не загружает локально установленные плагины. Использование node_modules/.bin/karma
для запуска тестов должно решить эту проблему.
Установка модуля покрытия в глобальном "пространстве имен" также работает, но, вероятно, не так, как вы хотите.
Ответ 7
Я думаю, что правильное решение
НЕ устанавливайте карму глобально
УСТАНОВИТЕ карма-кли глобально и установите карму локально
npm i -g karma-cli
Что тогда проблема, вы должны использовать karma-cli глобально, http://karma-runner.github.io/0.12/intro/installation.htmlЕсли вы устанавливаете карму по всему миру, она не использует локальную установку.
ссылка: github