Jak przetestować usługę AngularJS za pomocą Jasmine?
(Tutaj jest powiązane pytanie:Test Jasmine nie widzi modułu AngularJS)
Chcę tylko przetestować usługę bez ładowania początkowego Angular.
Patrzę na kilka przykładów i samouczek, ale nigdzie się nie wybieram.
Mam tylko trzy pliki:
myService.js: gdzie definiuję usługę AngularJS
test_myService.js: gdzie definiuję test Jasmine dla usługi.
specRunner.html: plik HTML z normalną konfiguracją jaśminu i gdzie importuję dwa poprzednie inne pliki oraz Jasmine, Angularjs i angular-mocks.js.
To jest kod usługi (działający zgodnie z oczekiwaniami, gdy nie testuję):
var myModule = angular.module('myModule', []);
myModule.factory('myService', function(){
var serviceImplementation = {};
serviceImplementation.one = 1;
serviceImplementation.two = 2;
serviceImplementation.three = 3;
return serviceImplementation
});
Próbując przetestować usługę w izolacji, powinienem mieć dostęp do niej i sprawdzić ich metody. Moje pytanie brzmi: jak mogę wstrzyknąć usługę w moim teście bez ładowania początkowego AngularJS?
Na przykład, jak mogę przetestować wartość zwróconą przez metodę usługi za pomocą Jasmine w ten sposób:
describe('myService test', function(){
describe('when I call myService.one', function(){
it('returns 1', function(){
myModule = angular.module('myModule');
//something is missing here..
expect( myService.one ).toEqual(1);
})
})
});