0
Kann mir jemand mit dem untenstehenden Szenario helfen, wie man das mit Karma Angular erreicht. $ stateChangeSuccess ist einfach ohne eine Callback-Funktion. Aber schwierig für StateChangeStart.Testfall für Statechangestart
$scope.$on('$stateChangeStart', function (event, toState, toParams, fromState) {
if (fromState.name.match('test.abc') && ($scope.validate())) {
event.preventDefault();
}
});
so etwas wie unten Probieren, aber ich bin nicht sicher, ich bin im richtigen Weg
var fromState = {name: 'test.abc'};
var toState = {name: 'test.xyz'};
scope.$on('$stateChangeStart');
expect(scope.$on).toHaveBeenCalled();
expect(fromState.name)toBe('test.abc');
/* expect event prevent default? */
Muss i fromstate, toState args in es passieren? – Mithun
@Hansie können Sie übergeben, was auch immer Sie zurückrufen möchten. Wenn es wie im obigen Beispiel extrahiert wird, ist es nur eine normale Funktion. Nicht anders als alle anderen. In Ihrem speziellen Fall müssen Sie dies vonState übergeben, da sonst fromState.name.match ('test.abc') die Ausnahme auslöst. – sielakos
danke, sorry für die letzte dumme Frage. Kann das Args ein Array sein? Ich muss 'event, toState, toParams, fromState' übergeben. Wie genau schätze ich das alles? Entweder durch Array? Und Ereignis sollte spioniert werden oder durch Erstellen eines externen Mock mit 'var event = scope. $ Broadcast ('click') übergeben werden;' plz clarrify – Mithun