错误:您需要包括一些实现__karma __。start方法的适配器


91

我正在尝试向我的项目之一添加一些单元测试。

到目前为止,我已经安装并配置了业力,并且已经安装了茉莉花。我有一个测试文件test/夹中。

业力服务器已启动,浏览器页面已就绪,但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。

这是显而易见的,还是我需要提供更多信息?


2
要注意的是,由于我最初没有注意到的预处理器语法错误,我收到此错误。
BradGreens

Answers:


73

看来这确实是一个非常普遍的错误,但是就我而言,问题是我没有karma start从正确的文件夹运行,或者在更改配置后没有重新启动它。

我将保留此问题,希望它可以成为遇到此错误消息的其他人的资源。


26
对我来说也一样-跑步karma start test/karma.conf.js对我有用。正确的目录可能与您不同。
杰森

3
添加预处理器时出现此错误:{'src / ** / *。js':['babel']},有什么想法吗?
SuperUberDuper '16

5
对我来说,test/**/*.{js,jsx}test/**/*.+(js|jsx)修复此错误。真奇怪!
杜松

1
如果业力配置有错字,也会出现此类错误
sergolius 18'Apr

28

如果您命名业力配置文件karma.conf.js,则只需键入karma start

否则指定文件名 karma start karmafile.js

(我在正确的目录中,但未指定文件名。)


13

您需要karma run在karma-conf.js所在的文件夹中运行您的函数或任何函数。


这似乎不正确。如果我karma startsrc所在的子文件夹中运行,karma.conf.js则会出现错误[karma-server]: Server start failed on port 9876: Error: The '@angular-devkit/build-angular/plugins/karma' karma plugin is meant to be used from within Angular CLI and will not work correctly outside of it.
BaltoStar


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!


4

在Angular.js代码库上运行规范时,我遇到了这个问题。我不得不跑去npm install karma-jasmine -g使这个工作。


3

如果键入“ karma start”,则当前文件夹中必须具有karma.conf.js文件。或只是“业力开始/path/karma.conf.js”

尝试通过“ karma init /path/karma.conf.js”创建一个新的karmar.conf.js


2

就我而言,我错误地将commonjs预处理器应用于karma-*模块和adapter.jsfrom,karma-chrome并且karma-firefox这种方式被破坏了。

不幸的是,这是一个非常普通的错误。


您能否提供更多有关所做修复的背景知识?因为我知道我正在使用业力铬,所以这可能使我立即受益。谢谢!
daniel.caspers 2016年

您是否应用commonjs预处理程序(是否在业力运行程序中对其进行了配置)?如果是,请确保未将其应用于karma- *模块中的文件。
阿德里安·伯

2

由于项目正在使用Babel 6,而我忘记了添加babelrc文件,因此出现了同样的错误。只是分享以防万一。


2

就我而言,该消息实际上非常具有描述性:我忘记将适配器(以Jasmine为例)添加到配置文件中。从而:

module.exports = function(config) {
  config.set({
      browsers: ['Chrome'],
      singleRun: true,
      frameworks: ['jasmine'],
      files: [
          // ... files ...
      ],
      // other configs
    });
};

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”中生成的配置文件。


1

我必须补充一点,在我的情况下,业力给了我错误,因为我在一个父文件夹的名称中有[方括号]。


1

我遇到了同样的问题,这是由于模块过时。

运行npm update解决了。


1

Tt抱怨适配器可能是茉莉或摩卡咖啡。适配器丢失,或者适配器安装不正确,或者是适配器的版本过时或错误。

就我而言,我有一个旧版本的Mocha 2.5.3,它与业力1+不兼容。 我将mocha依赖项更新为可用的最新版本 3.2.0,问题已解决。


1

在处理大量模糊描述的错误时,我尝试设置basePath:'../',在纠正了其他错误(例如,缺少逗号后被描述为对象内容错误)之后,最后一次更改回到basePath:”,使业力正常运行。业力的错误声明需要大量工作。要实现它并不简单。


1

我遇到过同样的问题。我的浏览器将打开,但是在我的终端上它抛出以下错误

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文件。在框架数组中,我包括了茉莉花和requirejs。但是我只安装了业力茉莉花。删除requireJS并重新运行业力开始工作!



1

我的karma.conf.js文件配置错误

files: ['**/*.js'],

这捕获了node_modules /中的所有文件,包括karma-jasmine插件的文件,因为它被视为原始文件,无法在启动时加载。更改为

files: [
        'src/*.js',
        'spec/*.js'
    ],

解决了我的问题


0

karma.conf.jsFWIW-在本地为我工作的文件路径,而不是在我的jenkins构建器上。我零线索为什么会这样,但是在詹金斯上,除非karma.conf.js文件位于发出karma命令的根目录中,。我正在使用Rails并通过rake任务运行js规范。下面的代码可能对某些人有所帮助。

https://gist.github.com/daino3/a39486ff8bfc1668e923



0

就我而言,这根本与业力无关!我使用ES6 / babel从gulp运行业力,实际上是一个代码语法错误,由我业力上方的babel错误标记:

错误[preprocessor.babel]:xxx.js:意外令牌(19:83)

我将其固定在src中,因此业力再次感到高兴。


0

我也一直在为此苦苦挣扎。我想到的是,发生此错误是因为以下原因之一

我的问题是我的配置文件名为karma.config.js而不是karma.conf.js

如果您已经安装了测试适配器,但仍然无法使用,请尝试运行karma init并完成指导的配置设置。


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
  })
}

0

我收到此错误是因为我两次都需要相同的依赖项!

删除重复的文件依赖项为我消除了错误。在下面的蓝色圆圈中。

在此处输入图片说明


0

您必须将业力配置文件指定为 力。

karma start karma.config.js 

这个对我有用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.