Карма — Жасмин: Ошибка: нет провайдера для фреймворка: жасмин-ajax

Я пытаюсь отправить карму на ajax.js Джеймина.

https://github.com/IDCubed/karma-jasmine-ajax

Моя конфигурация кармы имеет:

module.exports = function(config) {
  config.set({
    ...
    frameworks: ['jasmine-ajax', 'jasmine'],
  });
};

Мой package.json имеет:

  "devDependencies": {
    "bower": "^1.4.1",
    "del": "^1.1.1",
    "gulp": "^3.8.11",
    "gulp-concat": "^2.5.2",
    "gulp-karma": "0.0.4",
    "jasmine-ajax": "^3.1.0",
    "jasmine-core": "^2.2.0",
    "karma": "0.12.31",
    "karma-chrome-launcher": "0.1.7",
    "karma-cli": "0.0.4",
    "karma-jasmine": "0.3.5",
    "karma-jasmine-ajax": "^0.1.12",
    "karma-junit-reporter": "^0.2.2",
    "yargs": "^3.7.1"
  }

и моя спецификация выглядит так:

  describe("mocking ajax", function() {
    describe("suite wide usage", function() {

      beforeEach(function() {
        jasmine.Ajax.install();
      });

      afterEach(function() {
        jasmine.Ajax.uninstall();
      });

      it('does something', function() {

      });
    });
  });

Но у меня есть эта ошибка:

/node_modules/karma/node_modules/di/lib/injector.js:9
      throw error('No provider for "' + name + '"!');
            ^
Error: No provider for "framework:jasmine-ajax"! (Resolving: framework:jasmine-ajax)

Мне явно не хватает какого-то плагина или чего-то еще... но что?


person Rimian    schedule 16.04.2015    source источник


Ответы (2)


Только что потратил 4 часа на решение одной и той же проблемы. Здесь происходит несколько ошибок, суть которых в том, что существуют определенные конфликты версий и требования для «jasmine», «jasmine-ajax» и «karma-jasmine-ajax».

Я использую Jasmine 1.3, и текущая версия karma-jasmine-ajax зависит от версии jasmine-ajax, которая несовместима с Jasmine 1.3.x.

Это указано в документации jasmine-ajax, но не в документации karma-jasmine-ajax: "Эта ветвь теперь имеет версию 2.0, если вам нужен jasmine-ajax для Jasmine 1.3.x, возьмите последнюю версию из этого тега."

Чтобы исправить этот конкретный конфликт, я указал "karma-jasmine-ajax": "0.1.3", в своем package.json и удалил свою зависимость от jasmine-ajax (который karma-jasmine-ajax будет включать сам себя).

Наконец, документация для jasmine-ajax также неверна для некоторых версий jasmine-ajax: некоторые используют request.RespondWith, а другие используют request.response. Для моей конкретной комбинации версий требуется request.response.

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

person Kyle Chadha    schedule 28.04.2015

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

module.exports = function(config) {
  config.set({
    frameworks: ['jasmine-ajax', 'jasmine'],
    plugins: ['karma-jasmine', 'karma-jasmine-ajax']
  });
};
person Trevor Karjanis    schedule 16.10.2018