我试图在我的一个项目中添加一些单元测试。
到目前为止,我已经安装并配置了业力,并安装了茉莉花。我在test/
文件夹中有一个测试文件。
karma服务器已启动,浏览器页面已准备就绪,但karma run
失败如下:
$ karma run karma-conf.js
[2014-06-14 15:19:11.046] [DEBUG] config - Loading config /foo/test/karma-conf.js
Waiting for previous execution...
Chrome 35.0.1916 (Linux) ERROR
You need to include some adapter that implements __karma__.start method!
此错误消息并不适合Google。
这是显而易见的,还是我需要提供更多信息?
答案 0 :(得分:69)
这似乎是一个非常普遍的错误,但在我的情况下,问题是我没有从正确的文件夹中运行karma start
,或者我没有重新启动它更改配置后。
我将此问题保持开放,并希望它可以成为遇到此错误消息的其他人的资源。
答案 1 :(得分:25)
如果您将您的业力配置文件命名为karma.conf.js
,则只需输入karma start
即可。
否则请指定文件名karma start karmafile.js
(我在正确的目录中,但没有指定文件名。)
答案 2 :(得分:13)
您需要在karma-conf.js所在的文件夹中运行karma run
或其他任何功能。
答案 3 :(得分:7)
在我的情况下,我必须将文件重命名为 karma.conf.js 然后执行业力开始
答案 4 :(得分:6)
我没有从我的karma.conf.js所在的路径运行 karma start 命令。我切换到该文件夹并运行相同的命令。多数民众赞成
答案 5 :(得分:6)
我遇到karma.conf.js
文件代码格式的问题:
files: [
// Modules
,"client/bower_components/angular/angular.min.js"
,"client/bower_components/angular-mocks/angular-mocks.js"
// App
,"client/app/app.module.js"
// Test
// ,"test/**/*.spec.js"
],
files
数组中的额外逗号导致此错误:
You need to include some adapter that implements __karma__.start method!
答案 6 :(得分:4)
我在Angular.js代码库上运行规范时遇到了这个问题。我必须运行npm install karma-jasmine -g
才能使其正常运行。
答案 7 :(得分:3)
如果输入“karma start”,则必须在当前文件夹中包含karma.conf.js文件。或者只是“karma start /path/karma.conf.js”
尝试通过“karma init /path/karma.conf.js”创建一个新的karmar.conf.js
答案 8 :(得分:2)
I was getting the same error because the project was using Babel 6 and I had forgotten to add the babelrc file. Just sharing in case this could help.
答案 9 :(得分:2)
您需要配置“my.conf.js”文件,因为它包含用于测试代码的所有信息。
您需要写的所有内容都是:
可以使用karma init生成配置文件:
$ karma init my.conf.js
您想使用哪个测试框架? 按Tab键列出可能的选项。输入以转到下一个问题。
茉莉
你想使用Require.js吗? 这将添加Require.js插件。 按Tab键列出可能的选项。输入以转到下一个问题。
没有
您想自动捕获浏览器吗? 按Tab键列出可能的选项。输入空字符串以移至下一个问题。
铬
源文件和测试文件的位置是什么? 你可以使用glob模式,例如。 “js / * .js”或“test / ** / * Spec.js”。 按Enter进入下一个问题。
*。JS 测试/ ** / *。JS
是否应排除先前模式中包含的任何文件? 你可以使用glob模式,例如。 “** / *。SWP”。
按Enter进入下一个问题。
您是否希望Karma观看所有文件并在更改时运行测试? 按Tab键列出可能的选项。
是
在“/Users/vojta/Code/karma/my.conf.js”生成的配置文件。
答案 10 :(得分:2)
在我的情况下,该消息实际上非常具有描述性:我忘了在我的案例Jasmine中添加一个适配器到配置文件中。因此:
module.exports = function(config) {
config.set({
browsers: ['Chrome'],
singleRun: true,
frameworks: ['jasmine'],
files: [
// ... files ...
],
// other configs
});
};
答案 11 :(得分:1)
我必须补充说,在我的情况下,业力给了我错误,因为我在其中一个父文件夹的名称中有[方括号]。
答案 12 :(得分:1)
我的karma.conf.js中的“文件”配置错误
files: ['**/*.js'],
这捕获了node_modules /中的所有文件,包括karma-jasmine插件的文件,因为它被视为原始文件,没有在启动时加载。更改为
files: [
'src/*.js',
'spec/*.js'
],
解决了我的问题
答案 13 :(得分:1)
在我的情况下,我错误地将commonjs预处理器应用于adapter.js
模块,karma-chrome
和karma-firefox
中的public void onErrorResponse(VolleyError error)
{
// error
if( error instanceof NetworkError) {
Toast.makeText(getActivity(), "Network Error", Toast.LENGTH_LONG).show();
} else if( error instanceof ServerError) {
Toast.makeText(getActivity(), "Server Error", Toast.LENGTH_LONG).show();
} else if( error instanceof AuthFailureError) {
Toast.makeText(getActivity(), "AuthFailureError", Toast.LENGTH_LONG).show();
} else if( error instanceof ParseError) {
Toast.makeText(getActivity(), "Parse Error", Toast.LENGTH_LONG).show();
} else if( error instanceof NoConnectionError) {
Toast.makeText(getActivity(), "NoConnection Error", Toast.LENGTH_LONG).show();
} else if( error instanceof TimeoutError) {
Toast.makeText(getActivity(), "TimeOut Error", Toast.LENGTH_LONG).show();
}
}
以这种方式被破坏。
不幸的是,这是一个非常普遍的错误。
答案 14 :(得分:1)
Tt抱怨适配器可能是茉莉或摩卡咖啡。 适配器丢失,要么设置不正确,要么是适配器的过时或错误版本。
在我的情况下,我有一个旧版本的mocha 2.5.3与karma 1+不兼容。 我将mocha依赖关系更新为最新版本可用3.2.0并解决了问题。
答案 15 :(得分:1)
在处理许多模糊描述的错误时,我尝试设置basePath:'.. /',在纠正其他错误(比如缺少逗号被描述为对象内容错误)后,最后一次更改回basePath:'',得到了业力上班。业力的错误陈述需要大量的工作。让它继续下去并不容易。
答案 16 :(得分:0)
您必须为业力指定业力配置文件。
karma start karma.config.js
对我有用
答案 17 :(得分:0)
我遇到了同样的问题,但上述解决方案对我不起作用。我最终发现我的 karmaWebpackConfig 使用“babel-loader”作为加载器。我刚刚删除了那条线,它对我有用。
答案 18 :(得分:0)
鉴于这是此错误消息在 google 上的第一个结果,我想我会在这里提到我的解决方案。
在将 AngularJS 1.8 项目转换为 Typescript 并尝试更改我的 Karma 测试以使用 typescript 预处理器后,我收到此错误。
我终于意识到添加 import angular from 'angular'
解决了 Karma 方面的问题,但随后 angular
在 webpack 的构建中显示为未定义。
最终感谢 this answer 关于那个错误消息的问题,我将导入语句更新为 import * as angular from 'angular'
,终于成功了! (最终,我必须解决每个打字稿文件上的每个编译错误才能完全解决,自从 webpack 构建工作以来,我一直忽略了这一点。)
希望这可以帮助解决此问题的人!
答案 19 :(得分:0)
答案 20 :(得分:0)
运行启动业力时,您必须指定karma.config.js
的目录。
尝试
karma start karma.config.js
答案 21 :(得分:0)
就我而言,配置文件名不同。因此,运行指定 conf 文件的命令解决了我的问题。
>> karma start unit-tests.conf.js
No captured browser, open http://localhost:9876/
...
对于'PhantomJS',在浏览器中打开指定的链接( localhost:9876 )会执行测试用例。
希望它有所帮助。 :)
编辑1:我的业力配置文件
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'./node_modules/angular/angular.js',
'./node_modules/angular-ui-router/release/angular-ui-router.js',
'./node_modules/angular-mocks/angular-mocks.js',
'./app/services/users/users.js',
'./app/app.js',
'./app/services/users/users.spec.js'
],
// list of files to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['spec'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity
})
}
答案 22 :(得分:0)
我也一直在努力解决这个问题。我得出的是因为以下原因之一而发生此错误
lag()
或命令中没有指定配置文件)我的问题是我的配置文件名为select col1,
lag(col1, 1) over (order by col1) as col1_prev,
lag(col1, 2) over (order by col1) as col1_prev2
from t;
,而不是karma.conf.js
。
如果您已安装测试适配器但仍然无法正常工作,请尝试运行karma.config.js
并完成指导配置设置。
答案 23 :(得分:0)
我有同样的问题。我的浏览器会打开,但在我的终端上它会抛出以下错误
30 08 2017 11:19:28.272:INFO [Chrome 58.0.3029 (Linux 0.0.0)]: Connected `enter code here`on socket 5sSs6E5KmpUVRp6LAAAB with id 93886631
Chrome 58.0.3029 (Linux 0.0.0) ERRORSome of your tests did a full page reload!
我检查了我的karma.conf.js文件。在框架数组中,我包含了jasmine和requirejs。但我只安装了karma-jasmine.Removing requireJS并重新运行业力开始工作!
答案 24 :(得分:0)
就我而言,根本不是业力相关的!我从gulp运行karma,使用ES6 / babel,实际上有一个代码语法错误,在我的业力之上被一个babel错误标记:
错误[preprocessor.babel]:xxx.js:意外的令牌(19:83)
我在我的src中解决了这个问题,业力再次开心。
答案 25 :(得分:0)
同样的问题发生在我身上,这是由于一个过时的模块。
正在运行npm update
解决了它。
答案 26 :(得分:0)
我的案例中的问题是业力并没有拿起任何文件。将其修复到karma.conf.js解决了这个问题。
答案 27 :(得分:0)
FWIW - 获取karma.conf.js
的文件路径在本地工作,但不是我的jenkins构建器。我不知道为什么会这样,但是在jenkins上它会抛出这个错误,除非karma.conf.js
文件位于给出了karma命令的根目录中。我使用rails并通过rake任务运行js规范。代码如下,可能对某些人有帮助。