¿Cómo pruebo un servicio AngularJS con Jasmine?
(Hay una pregunta relacionada aquí:La prueba del jazmín no ve el módulo AngularJS)
Solo quiero probar un servicio sin bootstrapping Angular.
He visto algunos ejemplos y el tutorial, pero no voy a ninguna parte.
Solo tengo tres archivos:
myService.js: donde defino un servicio AngularJS
test_myService.js: donde defino una prueba de Jasmine para el servicio.
specRunner.html: un archivo HTML con la configuración normal de jazmín y donde importo los otros dos archivos anteriores y Jasmine, Angularjs y angular-mocks.js.
Este es el código del servicio (que funciona como se esperaba cuando no estoy probando):
var myModule = angular.module('myModule', []);
myModule.factory('myService', function(){
var serviceImplementation = {};
serviceImplementation.one = 1;
serviceImplementation.two = 2;
serviceImplementation.three = 3;
return serviceImplementation
});
Como estoy tratando de probar el servicio de forma aislada, debería poder acceder a él y verificar sus métodos. Mi pregunta es: ¿cómo puedo inyectar el servicio en mi prueba sin arrancar AngularJS?
Por ejemplo, ¿cómo puedo probar el valor devuelto para un método del servicio con Jasmine como este:
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);
})
})
});