Подтвердить что ты не робот

Не удалось запустить 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/'
    }

  });
};
4b9b3361

Ответ 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