Ошибка: необходимо включить какой-то адаптер, реализующий метод __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

Ответы:

73

Кажется, что это очень общая ошибка, однако в моем случае проблема заключалась либо в том, что я не запускал karma startиз правильной папки, либо в том, что я не перезапускал ее после изменения конфигурации.

Я оставлю этот вопрос открытым и надеюсь, что он может стать источником информации для других, у кого возникло это сообщение об ошибке.

Дрю Ноукс
источник
26
То же самое для меня - бег karma start test/karma.conf.jsпомог мне. Правильный каталог может быть другим для вас.
Джейсон
3
Я получил эту ошибку при добавлении препроцессоров: {'src / ** / *. Js': ['babel']}, есть идеи?
SuperUberDuper
5
Для меня изменение test/**/*.{js,jsx}на test/**/*.+(js|jsx)исправление этой ошибки. Как странно!
juniper-
1
Также такая ошибка может появиться, если в конфиге кармы есть опечатка
серголиус 07
28

Если вы назвали свой конфигурационный файл кармы karma.conf.js, вы можете просто ввести karma start.

В противном случае укажите имя файла karma start karmafile.js

(Я находился в правильном каталоге, но не указывал имя файла.)

Джеймс Лорук
источник
13

Вам нужно запустить свою karma runили любую другую функцию в папке, где находится karma-conf.js.

AndyX
источник
Это не кажется правильным. Если я бегу karma startв srcподпапку, где 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
7

В моем случае мне пришлось переименовать файл в karma.conf.js, затем запустить карму

Рафаэль Фернандес
источник
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

Я не запускал команду karma start с пути, где был мой karma.conf.js. Я переключился в эту папку и выполнил ту же команду. Вот и все

Сунил Гарг
источник
4

Я столкнулся с этой проблемой во время работы со спецификациями кодовой базы Angular.js. Мне пришлось бежать, npm install karma-jasmine -gчтобы это заработало .

ХариКришнан
источник
3

Если вы набираете «начало кармы», в текущей папке должен быть файл karma.conf.js. или просто "начало кармы /path/karma.conf.js"

Попробуйте создать новый файл karmar.conf.js с помощью "karma init /path/karma.conf.js"

Майк Чжан
источник
2

В моем случае, я прикладывал по ошибке CommonJS препроцессора к karma-*модулям и adapter.jsот karma-chromeи karma-firefoxбыл разбит таким образом.

К сожалению, это очень типичная ошибка.

Адриан Бер
источник
Не могли бы вы рассказать подробнее об исправлении, которое вы сделали? Возможно, это меня сейчас достает, поскольку я знаю, что использую карма-хром. Благодарность!
daniel.caspers
Применяете ли вы препроцессор commonjs (он настроен в karma runner)? Если да, убедитесь, что он не применяется к файлам в модулях 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

Какую среду тестирования вы хотите использовать? Нажмите вкладку, чтобы просмотреть возможные варианты. Введите, чтобы перейти к следующему вопросу.

жасмин

Вы хотите использовать Require.js? Это добавит плагин Require.js. Нажмите вкладку, чтобы просмотреть возможные варианты. Введите, чтобы перейти к следующему вопросу.

нет

Вы хотите автоматически захватить браузер? Нажмите вкладку, чтобы просмотреть возможные варианты. Введите пустую строку, чтобы перейти к следующему вопросу.

Хром

Где находятся ваши исходный и тестовый файлы? Вы можете использовать шаблоны глобусов, например. «js / *. js» или «test / ** / * Spec.js». Нажмите Enter, чтобы перейти к следующему вопросу.

* .js test / ** / *. js

Следует ли исключить какой-либо из файлов, включенных в предыдущие шаблоны? Вы можете использовать шаблоны глобусов, например. «** / *. swp».

Нажмите Enter, чтобы перейти к следующему вопросу.

Вы хотите, чтобы Карма просматривала все файлы и проводила тесты на изменения? Нажмите вкладку, чтобы просмотреть возможные варианты.

да

Файл конфигурации, созданный по адресу "/Users/vojta/Code/karma/my.conf.js".

Хуан Мануэль Герреро Эрнандес
источник
1

Я должен добавить, что в моем случае карма вызвала ошибку, потому что у меня были [квадратные] скобки в имени одной из родительских папок.

Юра
источник
1

Та же проблема случилась со мной, и это было из-за устаревшего модуля.

Бег npm updateрешил это.

Magicprog.fr
источник
1

Он жалуется на адаптер, который, вероятно, состоит из жасмина или мокко. Либо адаптер отсутствует, либо он неправильно настроен, либо это устаревшая версия адаптера, либо с ошибками.

В моем случае у меня была старая версия mocha 2.5.3, которая не была совместима с кармой 1+. Я обновил зависимость мокко до последней доступной версии 3.2.0, и проблема решена.

Джорджио
источник
1

Работая над многочисленными неопределенно описанными ошибками, я попытался установить basePath: '../'. После исправления других ошибок (например, пропущенных запятых, которые были описаны как ошибки содержимого объекта) последнее изменение basePath: '' заставило карму работать. заявления об ошибках кармы требуют большой работы. Это непросто.

Mike_Laird
источник
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. В массив фреймворков я включил jasmine и requirejs. Но я установил только karma-jasmine. Удаление requireJS и повторный запуск karma start сработали!

CoolNiks
источник
1

Вам нужно будет указать каталог karma.config.jsпри запуске стартовой кармы.

Пытаться

karma start karma.config.js

Пасхалидис Христос
источник
1

У меня была плохая конфигурация файлов в моем karma.conf.js

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

это захватило все файлы в node_modules /, включая файлы плагина karma-jasmine, так как он рассматривался как файлы sourde, которые не загружались при запуске. Переход на

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

решил проблему в моем случае

Йохан Мартинссон
источник
0

FWIW - поиск пути к файлу karma.conf.jsработал у меня локально, но не на моем конструкторе jenkins. У меня нет никаких подсказок, почему это так, но на jenkins это вызывало эту ошибку, если только karma.conf.jsфайл не находился в корневом каталоге, где была дана команда karma. Я использую рельсы и запускаю спецификации js через задачу rake. Код ниже, который может быть полезен для некоторых.

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

daino3
источник
0

В моем случае проблема заключалась в том, что карма не собирала никаких файлов. Исправление в karma.conf.js решило проблему.

Андраш Хатвани
источник
0

В моем случае это вообще не было связано с кармой! Я запускаю karma из gulp с ES6 / babel, и на самом деле была синтаксическая ошибка кода, отмеченная ошибкой babel над моей кармой:

ОШИБКА [preprocessor.babel]: xxx.js: неожиданный токен (19:83)

Я исправил это в моем src, и карма снова была счастлива.

Мерл
источник
0

Я тоже боролся с этим. Я пришел к выводу, что эта ошибка возникает по одной из следующих причин.

Моя проблема заключалась в том, что мой файл конфигурации был назван karma.config.jsвместо karma.conf.js.

Если вы установили тестовый адаптер, но он по-прежнему не работает, попробуйте запустить его karma initи выполните пошаговую настройку конфигурации.

kontrollanten
источник
0

В моем случае имя файла конфигурации было другим . Итак, запуск команды, указывающей файл conf, решил мою проблему.

>> karma start unit-tests.conf.js
No captured browser, open http://localhost:9876/
...

А для PhantomJS открытие указанной ссылки ( localhost: 9876 ) в браузере запускает тестовые случаи.

Надеюсь, это поможет. :)

РЕДАКТИРОВАТЬ 1: Файл конфигурации My Karma

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
  })
}
Навин Кумар V
источник
0

Я получил эту ошибку, потому что мне дважды требовалась одна и та же зависимость!

Удаление зависимости дублированного файла устранило ошибку для меня. Обведено синим цветом ниже.

введите описание изображения здесь

Джон Вандивье
источник
0

Вы должны указать файл конфигурации karma для karma.

karma start karma.config.js 

Меня устраивает

Стив КАКОУ
источник