37

我正在尝试使用 karma 运行覆盖,我收到警告:WARN [preprocess]: Can not load "coverage",它没有注册!

我以为我在运行“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/'
    }

  });
};
4

8 回答 8

51

我得到了相同的 [WARN],因为插件 'karma-coverage' 没有在配置的插件中定义,尝试查看添加它是否可以解决您的警告,不确定它是否会解决您的全部问题。

plugins: [
  'karma-jasmine',
  'karma-coverage',
  'karma-chrome-launcher',
  'karma-firefox-launcher',
],

更新:
运行覆盖时我也遇到了另一个问题,由伊斯坦布尔引起,我的错误是

[覆盖]:[TypeError:无法设置未定义的属性“覆盖”]

在查看了伊斯坦布尔在做什么之后,我发现我的一些 js 单元文件的路径在预处理器中已经过时了。

它正在做一些覆盖率报告,但它没有为所有文件生成深度覆盖率报告,因此出现错误。一旦我修好了路径,一切都很好。

    preprocessors : {
        '**/app/js/*/*.js' : 'coverage',
        '**/app/js/modules/*/*.js' : 'coverage',
        '**/app/js/services/*/*.js' : 'coverage'
    }, 
于 2013-09-18T18:47:24.333 回答
13

对于它的价值,这对我来说很好。安装:

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

于 2013-08-10T16:14:36.757 回答
10

对于那些使用 grunt test 运行 karma 测试,并遇到覆盖插件未加载问题的人。请将plugins设置添加到您的 Gruntfiles.js karama 任务中,即

// Test settings
karma: {
  unit: {
    configFile: 'test/karma.conf.js',
    singleRun: true,
    plugins:[
      'karma-jasmine',
      'karma-coverage',
      'karma-phantomjs-launcher'
    ],
  }
}
于 2014-08-20T00:58:46.787 回答
2

我遇到了同样的问题,直到我将 karma.conf.js 移动到与 package.json 相同的目录中,然后它才起作用。

于 2015-03-24T18:09:23.280 回答
1

没有全局安装的解决方案

安装karma-coverage

npm install --saved-dev karma-coverage

然后编辑karma.conf.js并添加require('karma-coverage')plugins.

module.exports = function (config) {
  config.set({
    // ...
    plugins: [
      require('karma-coverage'), // ADD THIS
      // ...
    ],
  });
}
于 2021-11-06T23:10:43.460 回答
1

此答案中描述了此问题

当使用全局安装的业力时,它不会加载本地安装的插件。使用node_modules/.bin/karma启动测试应该可以解决这个问题。

在全局“命名空间”中安装覆盖模块也可以,但可能不是您想要的。

于 2017-04-05T20:19:37.643 回答
1

我认为正确的解决方案是

不要在全球范围内安装业力

全局安装 karma-cli 并在本地安装 karma

npm i -g karma-cli

这就是问题所在,你应该全局使用 karma-cli, http: //karma-runner.github.io/0.12/intro/installation.html 如果你全局安装 karma,它不会使用本地安装。

参考:github

于 2017-05-15T22:05:26.767 回答
0

我在全球范围内安装了 karma-coverage 它对我有用:-)

npm install -g karma-coverage
于 2016-08-22T18:28:25.377 回答