AngularJS с неизвестным поставщиком Karma: $routeProvider


Я получаю хорошо документированную ошибку ниже, пытаясь запустить Angular.JS app через карму:

[$injector:unpr] Unknown provider: $routeProvider

JS фактически генерируется из ClojureScrpit с использованием purnam. Но, глядя на сгенерированный JS, он выглядит нормально:

var news = {app:{}};
news.app.newsApp = angular.module("newsApp", ["ngRoute"]);
angular.module("newsApp").config(["$routeProvider", function(a) {
  a.when("/", {templateUrl:"views/main.html", controller:"MainCtrl"});
  a.otherwise({redirectTo:"/"});
  return a;
}]);
Итак, я прохожу в "ngRoute", который, похоже, является общей причиной. Моя карма.конф.js включает угловой маршрут:
files: [
  'app/bower_components/angular/angular.js',
  'app/bower_components/angular-mocks/angular-mocks.js',
  'app/bower_components/angular-resource/angular-resource.js',
  'app/bower_components/angular-cookies/angular-cookies.js',
  'app/bower_components/angular-sanitize/angular-sanitize.js',
  'app/bower_components/angular-route/angular-route.js',
  'app/scripts/*.js',
  'app/scripts/**/*.js',
  'test/mock/**/*.js',
  'test/spec/**/*.js'
],

И я вижу загрузку углового маршрута в запуске karma. Любая помощь будет очень признательна.

3 2

3 ответа:

Это, кажется, работает по адресу:

Http://plnkr.co/edit/9xEZm0z22ab2YL6kL1fT?p=preview

var news = {app:{}};

news.app.newsApp = angular.module("newsApp", ["ngRoute"]);

news.app.newsApp.config(["$routeProvider", function(a) {
  a.when("/", {templateUrl:"views/main.html", controller:"MainCtrl"})
  a.otherwise({redirectTo:"/"});
  return a;
}]);

Вот еще одна попытка!

angular.module('newsApp').config(['$configName', '$routeProvider', function newsAppConfig(config, $routeProvider) {}]);

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

У меня была та же проблема, и это было мое решение. Как вы можете видеть в файле karma.конф.JS массив javascript с именем 'files []' включает папку /test/mock/**/*js. Вы можете добавить в папку "потешное" файл модули.JS. В этом файле добавьте следующую строку;

'use strict';
 angular.mock.module('ngRoute', []);

Для угловой.издеваться.модуль ('ngRoute', []); должен сделать трюк. добавьте дополнительные модули для макета в этот файл, если это необходимо.