Ich stehe mit Unitar Test mit Karma Kopf. Ich möchte die Zustandsübergänge überprüfen, also habe ich diesen Test erstellt. Die App beginnt mit dem landing
Staat und von dort möchte ich gehen zu main
. Dies ist eine sichere Route so zu login
umgeleitet wird:Wie testet man Zustandsübergang in Winkel?
it('should go to loginpage before main', function() {
$scope.$apply();
expect($state.current.name).toBe('landing');
$state.transitionTo('main');
$scope.$apply();
expect($state.current.name).toBe('login');
});
In meinem app.js ich habe:
$rootScope.$on('$stateChangeStart', function (event,next) {
console.log('statechange from:', $state.current.name)
//console.log('statechange to:',$state)
if (!next.authenticate) {
return;
}
//if next state is secure then check whether user is logged in:
if (next.authenticate) {
event.preventDefault();
$state.transitionTo('login');
console.log('goto login');
}
});
Wenn ich meinen Test mit Karma laufen erhalte ich:
Chrome 51.0.2704 (Mac OS X 10.11.4) secure tests should go to loginpage before main FAILED
Expected '' to be 'landing'.
at Object.<anonymous> (/Users/dimitri/karma/basic_karma/appSpec.js:23:37)
Expected '' to be 'login'.
Warum ist die $state.current.name
leer?
Github ref: https://github.com/dimitri-a/basic_karma