我们正在使用ui-router 0.2.10.
我将一个resolve对象作为参数注入我的控制器,然后在控制器中设置一个范围变量.它在应用程序上完美运行如下:
国家提供者
$stateProvider.state('myState',{ resolve:{ foo: function(){ return 'bar'; },url: '/',templateUrl: 'index.html',controller: 'FooCtrl' })
调节器
app.Controllers.controller('FooCtrl',['$scope','$state','foo',function ($scope,$state,$log,Zone,foo) { $scope.testVar = foo console.log($scope.testVar); }])
然后,按照预期在Chrome中将“条形图”记录到控制台.
但是当使用Karma运行测试时,解析对象现在是未定义的,这使测试失败.这是测试代码:
describe('controllers',function(){ var $rootScope,$scope,$state beforeEach(module('app')) beforeEach(inject(function($injector) { $state = $injector.get('$state') $rootScope = $injector.get('$rootScope') $scope = $rootScope.$new() $controller = $injector.get('$controller') })) it('FooCtrl should exist',inject( function() { $state.go('myState') $rootScope.$apply() $controller = $controller('FooCtrl',{ '$scope': $scope }) $rootScope.$apply() assert.equal($scope.testVar,"bar","these strings are equal") })) })
出现此错误(在我的情况下,resolve对象称为resolvedRouteModels):
[$injector:unpr] Unknown provider: fooProvider <- foo http://errors.angularjs.org/1.3.0-build.2921+sha.02c0ed2/$injector/unpr?p0=fooProvider%20%3C-%20foo
任何帮助将不胜感激,如果您遇到此问题,请告诉我.