我在我的应用程序中对路由器进行单元测试时遇到了一些麻烦,该应用程序构建在 Angular ui 路由器上。我想测试的是状态转换是否适当地更改了 URL(稍后会有更复杂的测试,但这就是我开始的地方。)
这是我的应用程序代码的相关部分:
angular.module('scrapbooks')
.config( function($stateProvider){
$stateProvider.state('splash', {
url: "/splash/",
templateUrl: "/app/splash/splash.tpl.html",
controller: "SplashCtrl"
})
})
和测试代码:
it("should change to the splash state", function(){
inject(function($state, $rootScope){
$rootScope.$apply(function(){
$state.go("splash");
});
expect($state.current.name).to.equal("splash");
})
})
Stackoverflow 上的类似问题(以及官方的 ui 路由器测试代码)建议将 $state.go 调用包装在 $apply 中就足够了。但我已经这样做了,状态仍然没有更新。$state.current.name 保持为空。