从 Angular 1.5 迁移到 1.6 时,路由在单元测试中运行



我已经将我的应用程序迁移到 Angular 1.6,突然单元测试不再工作了。经过一番调查,我发现在运行单元测试时启用了路由。

我在$routeProvider中添加的额外代码是这样的:

$routeProvider.whenAuthenticated = function (path, route) {
    route.resolve = route.resolve || {};
    
    angular.extend(route.resolve, {
        isAuthenticated: ['Auth', function (auth) {
             return auth.authenticate();
        }]
    });
    return $routeProvider.when(path, route);
};

$routeProvider
    .whenAuthenticated('/', {
        redirectTo: '/dashboards'
    });
在 Angular 1.5 中,

auth.authenticate()永远不会被击中,而在 Angular 1.6 中,应用程序尝试导航到我的一条路线,然后auth.authenticate()被击中,并且 url 更改为"/dashboards"。有人知道 1.6 中发生了什么变化吗?在测试时,我是否需要执行其他操作来禁用路由?

在 1.6 中,$route 服务及其依赖项的实例化方式发生了变化,默认情况下,它将在早期实例化。

从以前的版本迁移

最新更新