Я пытаюсь проверить, как угловая служба отвечает на значения, получаемые от другой службы, когда она инициализирована, и у меня возникли проблемы с поиском неудобного способа ее выполнения. .. гораздо меньше тот, который работает.Тестирование Инициализация службы AngularJS с помощью Mocks
Служба Я пытаюсь тест выглядит вроде как это:
angular.module('myApp')
.service('myService', function (Auth, DataGrabber) {
var self = this;
this.initialize = function() {
this.user = Auth.getUser();
if (!this.user.name) {
DataGrabber.grabName();
}
if (!this.user.birthday) {
DataGrabber.grabBirthday();
}
}
this.initialize();
})
А вот не так гладко, как я пытаюсь проверить:
describe('myService', function() {
var myService;
var dataGrabberMock;
var authMock;
var grabbedName;
var grabbedBirthday;
beforeEach(function() {
module('myApp')
})
beforeEach(function() {
grabbedName = false;
grabbedBirthday = false;
authMock = {
getUser: function() {
return {
name: 'Bob',
birthday: 'Feb 22'
}
}
}
dataGrabberMock = {
grabName: function() {
grabbedName = true;
},
grabBirthday: function() {
grabbedBirthday = true;
}
}
module(function ($provide) {
$provide.value('Auth', authMock);
$provide.value('DataGrabber', dataGrabberMock);
})
})
it ('just gets info if all data is present', function() {
inject(function($injector) {
myService = $injector.get('myService');
expect(myService.user.name).toBe('Bob');
expect(myService.user.birthday).toBe('Feb 22');
});
});
it ('gets info if name is missing', function() {
// how do I stub the new user response here?
})
it ('calls birthdayGetter if birthday is missing', function() {
// here too?
})
})
Что самый чистый способ изменить значение, которое authMock обеспечивает для каждого теста?
Я пробовал миллионы различных комбинаций инъекций(), $ injector, $ provision и spyOn(). Я, наконец, получил его работу, установив заглушки и шпионы и вызвав myService.initialize() явно в тесте, но затем код инициализации запускается дважды для каждого теста, и это кажется неправильным.
Я новичок в угловом тестировании, поэтому вполне возможно, что есть лучший подход, который я рассматриваю как новичок.
Спасибо!
Спасибо! Я закончил тем, что использовал немного СУШЕНУЮ версию. Это действительно привело меня на правильный путь. – lonesomewhistle