Ho scritto un servizio AngularJS e vorrei testarlo.
angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']).
factory('myService', function ($http, fooService, barService) {
this.something = function() {
// Do something with the injected services
};
return this;
});
Il mio file app.js ha questi registrati:
angular
.module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider']
)
Posso testare che DI funziona come tale:
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();
});
});
Ciò ha dimostrato che il servizio può essere creato dal framework DI, tuttavia in seguito voglio testare l'unità del servizio, il che significa deridere gli oggetti iniettati.
Come procedo a fare questo?
Ho provato a inserire i miei oggetti fittizi nel modulo, ad es
beforeEach(module(mockNavigationService));
e riscrivendo la definizione del servizio come:
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); })
Ma quest'ultimo sembra fermare il servizio creato dal DI come tutti.
Qualcuno sa come posso deridere i servizi iniettati per i miei test unitari?
Grazie
David