sto cercando di testare un controller che dipende da un servizio io stesso ho costruito. Mi piacerebbe prendere in giro questo servizio dal momento che il servizio parla al DOM.Iniettando un servizio finto per un test di controllo angularjs
Ecco il mio test in corso:
describe('Player Controllers', function() {
beforeEach(function() {
this.addMatchers({
toEqualData: function (expected) {
return angular.equals(this.actual, expected);
}
});
});
describe('TestPSPlayerModule', function() {
var $httpBackend, scope, ctrl;
beforeEach(module('PSPlayerModule'));
beforeEach(inject(function (_$httpBackend_, $rootScope, $controller) {
$httpBackend = _$httpBackend_;
scope = $rootScope.$new();
ctrl = $controller(PlayerController, { $scope: scope });
}));
it('should request a clip url from the server when clipClicked is called', function() {
expect(1).toBe(1);
});
});
});
mio regolatore di simile a questa:
w.PlayerController = function ($scope, $http, $window, speedSlider, $location) {
...
}
quindi è lo speedSlider che voglio prendere in giro.
ho avuto l'idea di utilizzare un modulo che ho creato nel mio codice di prova che potrebbe fornire un'implementazione falso del cursore della velocità, così ho aggiunto quanto segue alla parte superiore del file test.js:
module('TestPSPlayerModule', []).factory('speedSlider', function() {
return = {
...
};
});
e quindi elencare quel modulo nel beforeeach() chiamata al posto di quella concreta, ma se lo faccio che ottengo il seguente errore:
Injector already created, can not register a module!
così ho dato ci deve essere un modo migliore per me per fornire una finta implementazione di uno dei miei servizi. Qualcosa forse posso usare sinon.js per ....
Hai visto questa documentazione? http://docs.angularjs.org/guide/dev_guide.services.testing_services Dove '$ window' viene preso in giro. È un esempio piuttosto semplice, ma potrebbe fornire un modello per ciò che si vuole fare. –
@NoahFreitas Il collegamento che hai fornito ora è morto – Stephane
@StephaneEybert, sembra che sia stato spostato e aggiornato qui: https://docs.angularjs.org/guide/services#unit-testing –