Angularjs 为什么必须显式注入$routeParams?

Angularjs 为什么必须显式注入$routeParams?,angularjs,Angularjs,我有一个名为AddController的角度控制器,具有以下签名: function($rootScope, $scope, $location, $timeout, $routeParams) 在相应的规范中,我从$controller服务获得它,如下所示: beforeEach(angular.mock.inject(function($rootScope, $controller, $httpBackend) { scope = $rootScope.$new();

我有一个名为AddController的角度控制器,具有以下签名:

function($rootScope, $scope, $location, $timeout, $routeParams)
在相应的规范中,我从$controller服务获得它,如下所示:

beforeEach(angular.mock.inject(function($rootScope, $controller, $httpBackend) {
          scope = $rootScope.$new();
          ctrl = $controller("AddController", {
             $scope: scope,
             $routeParams: {}
          });
       }));
它很好用。唯一的问题是,如果我删除$routeParams,代码就会中断,业力就会爆发

如您所见,还有其他依赖项,例如,我没有显式地提供$timeout,但angular没有对此抱怨


因此,底线问题是:$routeParams服务有什么特别之处?

代码中断,业力爆发:到底发生了什么?发布一个完整的测试示例。错误:[$injector:unpr]未知提供程序:$routeParamsProvider可能提供对ngRoute或ui路由器的遗忘依赖?是的。您只是忘记在测试中加载ngRoute模块。是的,缺少依赖项。它是一个外部模块,必须显式声明。谢谢