J'ai un service AngularJS service de l'écrit et de voudrais de test de l'unité.
angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']).
factory('myService', function ($http, fooService, barService) {
this.somthing = function() {
// Do something with the injected services
};
return this;
});
Mon app.js fichier a ces enregistré:
angular
.module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider']
)
Je peux tester les DI travaille en tant que tel:
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();
});
});
Cela s'est avéré que le service peut être créé par le DI-cadre, toutefois prochaine je veux unité de tester le service, ce qui signifie se moquant de la injecté des objets.
Comment dois-je faire?
J'ai essayé de mettre mes objets fantaisie dans le module, par exemple
beforeEach(module(mockNavigationService));
et la réécriture de la définition du service:
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); })
Mais ce dernier semble arrêter le service créé par le DI comme tous.
Quelqu'un sait comment je peut se moquer de l'injection de services pour mes tests unitaires?
Merci
David