Ich habe eine Scope-Funktion in meinem Controller mit einigen asynchronen Funktionen. Nachdem alles erledigt ist, ändert sich der Zustand.Warten auf stateChange im Test
controller.js
$scope.test = function() {
async().then(function() {
$state.go('somewhere');
});
};
ich es mit setTimeout()
testen konnte, aber das ist schmutzig denke ich.
Wie warte ich auf den stateChange in meinem Test?
Edit:
Ich mag Unit-Tests für die test()
Funktion schreiben, aber wie es ist kein Versprechen, das ich brauche für die Zustandsänderung in dem Test zu beobachten. Aber wie? Es funktioniert mit setTimeout()
, aber ich möchte nicht setTimeout()
verwenden, weil es einfach nicht richtig fühlt. Gibt es so etwas wie $scope.$watch
für Staaten?
test.js
...
it('test()', function (done) {
$scope.test();
setTimeout(function() { // I want this replaced with a listener for state
expect($scope.someVar).to.be.equal('value');
expect($state.current.name).to.be.equal('somewhere');
});
});
...
Ihre Frage ist nicht klar. Möchten Sie wissen, wie Sie nach dem Ausführen aller asynchronen Funktionen warten müssen, damit Sie den Status ändern oder feststellen können, wann der Status geändert wurde? –