У мене написана служба AngularJS, і я хотів би перевірити її.
angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']).
factory('myService', function ($http, fooService, barService) {
this.something = function() {
// Do something with the injected services
};
return this;
});
Мій файл app.js має такі зареєстровані:
angular
.module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider']
)
Я можу перевірити, чи працює DI як такий:
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();
});
});
Це показало, що послугу можна створити за допомогою системи DI, однак далі я хочу перевірити службу, що означає глузування з ін'єктованих об'єктів.
Як мені це робити?
Я спробував розмістити свої макетні об’єкти в модулі, наприклад
beforeEach(module(mockNavigationService));
і переписати визначення послуги як:
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); })
Але остання, здається, зупиняє послугу, яку створює DI, як усі.
Хтось знає, як я можу знущатися над ін'єкційними службами для моїх тестових одиниць?
Дякую
Девід