【发布时间】:2014-12-27 08:35:16
【问题描述】:
我正在使用以下代码初始化我的角度控制器:
console.log($state.current);
$location.path('/newpath');
console.log($state.current);
尽管路径已更改,但 $state.current 变量并未更改。我试过 $scope.$apply() 但这给了我一个摘要循环已经在进行中的错误。
请注意,这在我的测试中也不起作用:
it('should route /newpath to the newpath view', function () {
$location.path('/newpath');
$rootScope.$apply();
console.log($location.path());
console.log($state.current);
expect($state.current.templateUrl).to.equal('app/newpath/newpath.html');
});
【问题讨论】:
-
这 3 行是否在您的控制器内部?如果是,那么在那里执行的所有代码都只是属于当前状态...只有在此范围被销毁时...才会启动新状态...
-
是的,你是对的。我在控制器中使用了所有三行。但是如何进行测试呢?我已经用我的测试规范中的代码更新了我的问题。
-
但是更改位置不应该反映在状态上吗?目前我正在将角度应用程序从角度路由转换为 ui-router。我已经从我的原始角度路由器代码修改了这个测试代码,其中 $route.current.templateUrl 在通过 $location.path() 设置新位置后发生了变化。
-
不是 $state.go();用于更改 ui-router 中的路径?也许我弄错了
-
@sbaaaang 是的,如果你仔细阅读我的 cmets(和我的标签),你会发现我正在使用 ui-router,即我正在将我当前的应用程序从 angular-router 转换为 ui -路由器。
标签: angularjs unit-testing angular-ui-router