Ich habe einige Probleme beim Testen des Routers in meiner Anwendung, die auf dem Angular UI-Router basiert. Ich möchte testen, ob Statusübergänge die URL entsprechend ändern (es wird später kompliziertere Tests geben, aber hier fange ich an.)
Hier ist der relevante Teil meines Bewerbungscodes:
angular.module('scrapbooks')
.config( function($stateProvider){
$stateProvider.state('splash', {
url: "/splash/",
templateUrl: "/app/splash/splash.tpl.html",
controller: "SplashCtrl"
})
})
Und der Testcode:
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");
})
})
Ähnliche Fragen zu Stackoverflow (und dem offiziellen Testcode des UI-Routers) legen nahe, dass das Aufrufen des Aufrufs $ state.go in $ apply ausreichen sollte. Aber ich habe das getan und der Zustand wird immer noch nicht aktualisiert. $ state.current.name bleibt leer.