I'm trying to run coverage with karma, and I get the warning: WARN [preprocess]: Can not load "coverage", it is not registered!
我正试图用业力运行覆盖,我得到警告:WARN [预处理]:无法加载“覆盖”,它没有注册!
I thought I installed coverage when I ran 'npm install -g karma-coverage --save-dev'
当我跑'npm install -g karma-coverage --save-dev'时,我以为我安装了覆盖范围
Here's my config file:
这是我的配置文件:
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/'
}
});
};
7 个解决方案
#1
47
I got the same [WARN] because the plugin 'karma-coverage' was not defined inside the plugins of the config, try to see if adding it fixes your warning, not sure if it will fix your full problem.
我得到了同样的[WARN],因为插件'karma-coverage'没有在配置的插件中定义,试着看看是否添加它修复了你的警告,不确定它是否能解决你的完整问题。
plugins: [
'karma-jasmine',
'karma-coverage',
'karma-chrome-launcher',
'karma-firefox-launcher',
],
UPDATE:
I also had a different problem when running the coverage, caused by istanbul, my error was
更新:我在运行覆盖范围时遇到了另一个问题,由伊斯坦布尔引起,我的错误是
[coverage]: [TypeError: Cannot set property 'covered' of undefined]
[覆盖率]:[TypeError:无法设置未定义的属性'覆盖']
After having a look what istanbul was doing it turned out that the paths to some of my js unit files were outdated in the preprocessors.
看看伊斯坦布尔正在做什么,结果发现我的一些js单元文件的路径在预处理器中已经过时了。
It was doing some of the coverage reports but it was not generating deep coverage reports for all files hence the error. Once I fixed the paths it was all good.
它正在做一些覆盖率报告,但它没有为所有文件生成深度覆盖报告,因此出错。一旦我修好了路径,一切都很好。
preprocessors : {
'**/app/js/*/*.js' : 'coverage',
'**/app/js/modules/*/*.js' : 'coverage',
'**/app/js/services/*/*.js' : 'coverage'
},
#2
12
For what it's worth, this works fine for me. Installed with:
对于它的价值,这对我来说很好。安装时间:
npm install -g karma
npm install -g karma-coverage
Config in karma.config.js
:
在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
});
};
Run with karma start karma.config.js
.
与karma一起运行karma.config.js。
#3
9
For those who are using grunt test to run the karma test, and have the problem of coverage plugin not loaded issue. Please add the plugins
setting into your Gruntfiles.js karama task, i.e.
对于那些使用grunt测试来运行业力测试的人,并且有覆盖插件未加载问题的问题。请将插件设置添加到您的Gruntfiles.js karama任务中,即
// Test settings
karma: {
unit: {
configFile: 'test/karma.conf.js',
singleRun: true,
plugins:[
'karma-jasmine',
'karma-coverage',
'karma-phantomjs-launcher'
],
}
}
#4
2
I had the same issue, until I moved karma.conf.js into the same directory as package.json, then it worked.
我遇到了同样的问题,直到我将karma.conf.js移动到与package.json相同的目录中,然后才起作用。
#5
0
I installed karma-coverage globally it worked for me :-)
我在全球安装了karma-coverage它对我有用:-)
npm install -g karma-coverage
#6
0
This problem is described in this answer.
此答案中描述了此问题。
When using a globally installed karma it doesn't load the locally installed plugins. Using node_modules/.bin/karma
to start the tests should solve this problem.
使用全局安装的业力时,它不会加载本地安装的插件。使用node_modules / .bin / karma启动测试应该可以解决这个问题。
The installation of the coverage module in the global "namespace" also works but is probably not what you want.
覆盖模块在全局“命名空间”中的安装也有效,但可能不是您想要的。
#7
0
I think the correct solution is
我认为正确的解决方案是
DON'T install karma globally
不要在全球安装业力
INSTALL karma-cli globally and install karma locally
全局安装karma-cli并在本地安装业力
npm i -g karma-cli
npm i -g karma-cli
That's the problem then, you should use karma-cli globally, http://karma-runner.github.io/0.12/intro/installation.html If you install karma globally it doesn't use the local installation.
那就是问题,你应该全局使用karma-cli,http://karma-runner.github.io/0.12/intro/installation.html如果你在全局安装karma,它就不会使用本地安装。
reference: github
#1
47
I got the same [WARN] because the plugin 'karma-coverage' was not defined inside the plugins of the config, try to see if adding it fixes your warning, not sure if it will fix your full problem.
我得到了同样的[WARN],因为插件'karma-coverage'没有在配置的插件中定义,试着看看是否添加它修复了你的警告,不确定它是否能解决你的完整问题。
plugins: [
'karma-jasmine',
'karma-coverage',
'karma-chrome-launcher',
'karma-firefox-launcher',
],
UPDATE:
I also had a different problem when running the coverage, caused by istanbul, my error was
更新:我在运行覆盖范围时遇到了另一个问题,由伊斯坦布尔引起,我的错误是
[coverage]: [TypeError: Cannot set property 'covered' of undefined]
[覆盖率]:[TypeError:无法设置未定义的属性'覆盖']
After having a look what istanbul was doing it turned out that the paths to some of my js unit files were outdated in the preprocessors.
看看伊斯坦布尔正在做什么,结果发现我的一些js单元文件的路径在预处理器中已经过时了。
It was doing some of the coverage reports but it was not generating deep coverage reports for all files hence the error. Once I fixed the paths it was all good.
它正在做一些覆盖率报告,但它没有为所有文件生成深度覆盖报告,因此出错。一旦我修好了路径,一切都很好。
preprocessors : {
'**/app/js/*/*.js' : 'coverage',
'**/app/js/modules/*/*.js' : 'coverage',
'**/app/js/services/*/*.js' : 'coverage'
},
#2
12
For what it's worth, this works fine for me. Installed with:
对于它的价值,这对我来说很好。安装时间:
npm install -g karma
npm install -g karma-coverage
Config in karma.config.js
:
在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
});
};
Run with karma start karma.config.js
.
与karma一起运行karma.config.js。
#3
9
For those who are using grunt test to run the karma test, and have the problem of coverage plugin not loaded issue. Please add the plugins
setting into your Gruntfiles.js karama task, i.e.
对于那些使用grunt测试来运行业力测试的人,并且有覆盖插件未加载问题的问题。请将插件设置添加到您的Gruntfiles.js karama任务中,即
// Test settings
karma: {
unit: {
configFile: 'test/karma.conf.js',
singleRun: true,
plugins:[
'karma-jasmine',
'karma-coverage',
'karma-phantomjs-launcher'
],
}
}
#4
2
I had the same issue, until I moved karma.conf.js into the same directory as package.json, then it worked.
我遇到了同样的问题,直到我将karma.conf.js移动到与package.json相同的目录中,然后才起作用。
#5
0
I installed karma-coverage globally it worked for me :-)
我在全球安装了karma-coverage它对我有用:-)
npm install -g karma-coverage
#6
0
This problem is described in this answer.
此答案中描述了此问题。
When using a globally installed karma it doesn't load the locally installed plugins. Using node_modules/.bin/karma
to start the tests should solve this problem.
使用全局安装的业力时,它不会加载本地安装的插件。使用node_modules / .bin / karma启动测试应该可以解决这个问题。
The installation of the coverage module in the global "namespace" also works but is probably not what you want.
覆盖模块在全局“命名空间”中的安装也有效,但可能不是您想要的。
#7
0
I think the correct solution is
我认为正确的解决方案是
DON'T install karma globally
不要在全球安装业力
INSTALL karma-cli globally and install karma locally
全局安装karma-cli并在本地安装业力
npm i -g karma-cli
npm i -g karma-cli
That's the problem then, you should use karma-cli globally, http://karma-runner.github.io/0.12/intro/installation.html If you install karma globally it doesn't use the local installation.
那就是问题,你应该全局使用karma-cli,http://karma-runner.github.io/0.12/intro/installation.html如果你在全局安装karma,它就不会使用本地安装。
reference: github