У меня есть служба AngularJS, и я хотел бы unit test it.
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, но затем я хочу unit test службу, что означает издевательство над вложенными объектами.
Как мне это сделать?
Я пробовал помещать свои модулированные объекты в модуль, например.
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 как все.
Кто-нибудь знает, как я могу издеваться над внедренными службами для своих модульных тестов?
Спасибо
Дэвид