Como faço para testar um serviço AngularJS com o Jasmine?
(Há uma questão relacionada aqui:Teste de jasmim não vê o módulo AngularJS)
Eu só quero testar um serviço sem bootstrapping Angular.
Eu olhei alguns exemplos e o tutorial, mas não vou a lugar nenhum.
Eu tenho apenas três arquivos:
myService.js: onde eu defino um serviço AngularJS
test_myService.js: onde defino um teste do Jasmine para o serviço.
specRunner.html: um arquivo HTML com a configuração normal do jasmine e onde eu importo os outros dois arquivos anteriores e o Jasmine, Angularjs e angular-mocks.js.
Este é o código do serviço (que funciona como esperado quando não estou testando):
var myModule = angular.module('myModule', []);
myModule.factory('myService', function(){
var serviceImplementation = {};
serviceImplementation.one = 1;
serviceImplementation.two = 2;
serviceImplementation.three = 3;
return serviceImplementation
});
Como estou tentando testar o serviço isoladamente, eu deveria ser capaz de acessá-lo e verificar seus métodos. Minha pergunta é: como posso injetar o serviço no meu teste sem inicializar o AngularJS?
Por exemplo, como posso testar o valor retornado para um método do serviço com o Jasmine assim:
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);
})
})
});