AngularJS with Karma Unknown provider: $routeProvider

AngularJS with Karma Unknown provider: $routeProvider

本文关键字:routeProvider provider Unknown with Karma AngularJS      更新时间:2023-09-26

我得到了下面的良好记录的错误,试图通过Karma运行Angular.js应用程序:

[$injector:unpr] Unknown provider: $routeProvider

JS实际上是使用purnam从ClojureScrpit生成的。但是看看生成的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',这看起来是共同的原因。我的karma.conf.js包括angular-route:

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 startup中看到了angular-route加载。

这似乎可以在:

http://plnkr.co/edit/9xEZm0z22ab2YL6kL1fT?p =

预览
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.conf.js文件中看到的,名为'files[]'的javascript数组包含文件夹/test/mock/**/*js。你可以在"mock"文件夹中添加一个名为modules.js的文件。在此文件中添加以下行;

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

所以line angular.mock。模块("ngRoute",[]);应该能行。如有必要,在此文件中添加更多要模拟的模块。