Una domanda che si spera semplice sul test dell'unità AngularJS. Ho un controller utilizzando un semplice servizio (adattato dal progetto angolare seme)Test dell'unità di controllo AngularJS - servizi di iniezione
services.js:
angular.module('myApp.services', []).value('version', '0.1');
controllers.js:
function MyCtrl1($s, version) {
$s.version = version;
}
MyCtrl1.$inject = ["$scope","version"];
Questa grande opera im la mia app. Tuttavia, ho difficoltà a creare il controller nel lavoro di frame test unitario. Non riesco a capire come iniettare il servizio 'version' (o creare un'istanza) e passarlo a $ controller() factory - presumo che sia quello che voglio fare ?! Ecco l'ossatura spec:
controllerSpec.js:
beforeEach(inject(function($rootScope, $controller) {
scope = $rootScope.$new();
// how about version service?
ctrl = $controller(MyCtrl1, {$scope: scope, /* version: <where from?> */});
}));
it('Version should be 0.1 ...', function() {
expect(scope.version).toBe('0.1');
});
in corso i rendimenti test harness: > test.sh
... non riuscita (3,00 ms): Errore: Errore: provider sconosciuto: versionProvider < - versione Errore: provider sconosciuto: versionProvider - versione
Ho provato varie cose con $ injector/$ provider e module() ma senza risultato. Sono sicuro che la risposta è semplice, ma non riesco a vederlo.
Grazie! E 'stato semplice Non mi è venuto in mente di avere due chiamate beforeEach() interessanti. – iceberg
iceberg, contrassegnarlo come risposta accettata se ha risolto il problema. –
A proposito, è una buona pratica scrivere test di unità per un controller con una dipendenza dal servizio? Oppure è meglio creare il mock per il servizio, e quindi scrivere un test per il controller e uno per il servizio? –