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});
}
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});
}
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 $state
go
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 :)
Grazie @ Jesus. Per favore guarda anche questo argomento ... http://stackoverflow.com/questions/27740395/cannot-read-property-loadlisting -di-undefined-karma-gelsomino – forgottofly
Hai già dei test unitari per il resto del controller? – lukewestby
@lukewestby. No. Sto scrivendo solo per verificare gli stati – forgottofly