Tenho um serviço AngularJS escrito e gostaria de fazer um teste de unidade.
angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']).
factory('myService', function ($http, fooService, barService) {
this.something = function() {
// Do something with the injected services
};
return this;
});
Meu arquivo app.js tem estes registrados:
angular
.module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider']
)
Posso testar se o DI está funcionando da seguinte forma:
describe("Using the DI framework", function() {
beforeEach(module('fooServiceProvider'));
beforeEach(module('barServiceProvider'));
beforeEach(module('myServiceProvder'));
var service;
beforeEach(inject(function(fooService, barService, myService) {
service=myService;
}));
it("can be instantiated", function() {
expect(service).not.toBeNull();
});
});
Isso provou que o serviço pode ser criado pelo framework DI, porém agora quero fazer um teste de unidade do serviço, o que significa simular os objetos injetados.
Como faço para fazer isso?
Eu tentei colocar meus objetos fictícios no módulo, por exemplo
beforeEach(module(mockNavigationService));
e reescrevendo a definição de serviço como:
function MyService(http, fooService, barService) {
this.somthing = function() {
// Do something with the injected services
};
});
angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']).
factory('myService', function ($http, fooService, barService) { return new MyService($http, fooService, barService); })
Mas o último parece impedir o serviço de ser criado pela DI como um todo.
Alguém sabe como posso simular os serviços injetados para meus testes de unidade?
obrigado
David