2016-05-23 9 views
1

Ich versuche, eine Funktion in meinem Controller zu testen und nur zu überprüfen, ob $state.go aufgerufen wurde. Ich habe einen Spion auf $state.go aber wenn ich die Funktion ich nenne „Kann nicht auflösen‚den Zustand‘von Staat ...“Karma State go konnte nicht lösen "..."

Hier Funktion meines Controller:

function cancel(){ 
    $state.go('thestate', {}, {reload: true}); 
} 

und mein Test:

Wenn die Abbruchfunktion ausgeführt wird, erhalte ich die Fehlermeldung "Konnte Status nicht vom Status auflösen ...", aber ich habe einen definierten Status in meinen Routen.

Wie kann ich Staaten verspotten?

Antwort

3

Sofern es UI Router ist, die in Komponententest getestet wird, wird ui.router Modul nicht geladen werden müssen und hat $state verspottet werden, ebenso wie jeder andere Dienst, der nicht in der aktuellen Spezifikation getestet.

beforeEach(module('app', { $state: { 
    go: jasmine.createSpy() 
})); 

... 

it('...', inject(function ($state) { 
    this.scope.cancel(); 
    expect($state.go).toHaveBeenCalledWith('thestate', {}, {reload: true}); 
})); 
+0

Das funktionierte für mich – paulducsantos