Ответ 1
Выяснив это, я подумал, что отвечу на свой вопрос. Большая ошибка выше заключалась в использовании angular.module, а не angular.mock.module, что называется удобством, называемым модулем angular -mock. Они совсем не то же самое!
Кроме того, достаточно инициализировать макет службы с помощью angular.mock.module, пока вы это сделаете, прежде чем инициализировать тестируемый модуль. Там нет необходимости в этом "обертывании модулей в третьем модуле", как это было предложено в упомянутом выше вопросе. К остроумию:
describe("Test Service", function() {
var TestService, getvaluestub;
beforeEach(function() {
// create mock service
var mock = {getvalue:function(){}}
angular.module('dependencymodule',[])
.service('dependencyservice',function () {
return mock;
});
//mock the function we are stubbing, (that, in this case, returns value 4)
getvaluestub = sinon.stub(mock,'getvalue')returns(4);
//instantiate your mock service
module('dependencymodule');
//instantiate the module of the service under test,
//that depends on 'dependencyservice' mocked above
//(ie - testmodule includes the service 'testservice')
module('testmodule');
//inject your test service for testing
inject(function ($injector) {
TestService = $injector.get('testservice');
})
//tests go here.....
Если модуль зависимостей уже существует, вы можете либо выполнить все вышеперечисленное, либо получить услугу из инжектора $, вставить шпионы и заглушки, а затем > lt; создать экземпляр тестируемой службы. Важно, чтобы шпионы/заглушки были установлены > до < зависимая служба создается или создается без них. Это выглядит так:
describe("Test Service", function() {
var TestService, DependencyService, getvaluestub;
beforeEach(function() {
// these modules are specified in the application
module('dependencymodule');
module('testmodule');
inject(function ($injector) {
DependencyService = $injector.get('testservice');
getvaluestub = sinon.stub(DependencyService,'getvalue').returns(4);
OtherService = $injector.get('otherservice');
})
});
// test go here
Итак, вы идете. Надеюсь, это полезно для тех, кто ищет "Инъекции в нас" в angular services ".