Mam problemy z testowaniem jednostkowym routera w mojej aplikacji, która jest zbudowana na routerze Angular ui. Chcę sprawdzić, czy przejścia stanów odpowiednio zmieniają adres URL (później będą bardziej skomplikowane testy, ale od tego zaczynam).
Oto odpowiednia część mojego kodu aplikacji:
angular.module('scrapbooks')
.config( function($stateProvider){
$stateProvider.state('splash', {
url: "/splash/",
templateUrl: "/app/splash/splash.tpl.html",
controller: "SplashCtrl"
})
})
A kod testowy:
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");
})
})
Podobne pytania dotyczące Stackoverflow (i oficjalnego kodu testowego routera interfejsu użytkownika) sugerują, że zawinięcie wywołania $ state.go w $ apply powinno wystarczyć. Ale zrobiłem to i stan nadal się nie aktualizuje. $ state.current.name pozostaje puste.