为什么 Angular 单元测试加载 $route?

Why do Angular unit tests load $route?

更新到 Angular 1.5.3(从 1.4.9 开始)后,我所有的单元测试都开始失败,而它们之前是可以工作的。

错误如下:

Error: [$injector:unpr] Unknown provider: 
       AuthenticationHttpInterceptorProvider
         <- AuthenticationHttpInterceptor
           <- $http
             <- $templateRequest
               <- $route

预期 AuthenticationHttpInterceptorProvider 此时未知,因为它是未在此处进行单元测试的不同模块的一部分。如果我为这个拦截器提供一个模拟,我会得到一个错误,即 $httpBackend 不期待对定义的默认路由的 GET 请求。

我的问题是:为什么首先加载 $route,我该如何防止它?我没有对任何路由进行单元测试,也没有对$route 在定义路由的应用程序中的 .config 阶段之后。我希望永远不会收到任何对路由视图的 templateUrls 的请求。

我无法在 Angular 更新日志中找到任何让我期待新版本会有不同行为的内容。

$route服务被ngRoute强制实例化since 1.5.1:

Ensure $route will be instantiated in time to capture the initial $locationChangeSuccess event. This is necessary in case ngView is ncluded in an asynchronously loaded template.

这是 the issue 的修复。

这意味着 ngRoute 应该是应用程序路由模块的依赖项,而不是其他测试模块。