2014-12-31 17 views
6

Come posso scrivere i test delle unità per una funzione che ha $ state.go() e che è previsto reindirizzare a quel particolare sate?

  $scope.inviteMembers = (id)=> { 
       $state.go('invite', {deptId: id}); 
       } 
+0

Hai già dei test unitari per il resto del controller? – lukewestby

+0

@lukewestby. No. Sto scrivendo solo per verificare gli stati – forgottofly

risposta

15

Poiché si tratta di un test di unità, è sufficiente assicurarsi che la funzione venga chiamata, nient'altro.

Qualcosa seguendo queste righe:

it('should move to the invite page after inviting someone', function() { 
    spyOn($state, 'go'); 

    $scope.inviteMembers(1); 

    expect($state.go).toHaveBeenCalledWith('invite', {deptId: 1}); 
}); 

Quindi l'idea principale è quello di spiare sul metodo di $statego e quando chiamiamo il metodo, abbiamo solo bisogno di verificare che il metodo $state.go sono stati chiamati e con quali parametri.

Prima che me lo chieda ... Sì, ma voglio essere sicuro che anche lo stato cambi. Beh, non hai bisogno di farlo.

Questo è un test di unità, il che significa che la tua unica preoccupazione è quella di testare questo controller e nient'altro, e la sua responsabilità finisce che solo chiamando quel metodo. Quello che succede dopo è responsabilità di qualcun altro, in questo caso ui-router e scommetto che l'ui-router è ben testato :)

+0

Grazie @ Jesus. Per favore guarda anche questo argomento ... http://stackoverflow.com/questions/27740395/cannot-read-property-loadlisting -di-undefined-karma-gelsomino – forgottofly

Problemi correlati