Io uso John papà stile angolare guide mio controller appare come:Come testare il test dell'unità John papa vm.model con il gelsomino?
seguendo lo stile John papa style controller style guide:
function testController() {
var vm = this;
vm.model = { name: "controllerAs vm test" };
}
Il mio codice di prova si presenta come:
describe('Controller: testController', function() {
beforeEach(module('myApp'));
var testController;
beforeEach(inject(function ($controller) {
scope = {};
testController = $controller('testController', {
});
}));
it('should have vm.model defined and testController.vm.model is equal to controllerAs vm test', function() {
expect(testController.vm).toBeDefined();
expect(testController.vm.model).toBeDefined();
expect(testController.vm.model.name).toEqual("controllerAs vm test");
});
});
Risultato:
test non riuscito: Messaggio risultato: Previsto indefinito da definire. allo stack
Quindi la mia domanda è come possiamo testare vm.model e altre variabili da questo? Non ho trovato corretto linea guida nelle linee guida: controllers
come funzione la risposta sembra ok ma qui il mio problema è quando inizializzo l'istanza del controller da: testController = $ controller ('testController', { }); quindi testController.vm dovrebbe funzionare ma non funziona.Quindi la mia domanda è ai ragazzi che hanno lavorato con il controller di angular john papa come sintassi vm e testato con jasmine. –
@UtpalKumarDas - Sotto il '' controller 'di Hood sta chiamando 'new()', quindi funziona allo stesso modo. – Josh
@UtpalKumarDas - Lavoro con Angular da diversi anni e ho fatto molti test con Jasmine. Sto cercando di spiegare che questa non è una cosa Angolare, ma una JavaScript. 'vm' non è una proprietà sul controller ... è una variabile che viene chiusa dall'ambito della funzione. Pertanto, ** mai ** esiste sul controller quando viene utilizzato in questo modo. '$ controller' non cambia il modo in cui JS funziona. – Josh