Следите за местной функцией Angular Service
У меня есть служба Angular, использующая локальную функцию и выполняющая следующую работу:
function myService($http,$q){
var myService = {};
var _localService = function (Table) {
return Table.something;
}
var _getSomething = function () {
return _localService('someTable');
}
var _getSomethingElse = function () {
return _localService('someTable2');
}
myService.getSomething = _getSomething ;
myService.getSomethingElse = _getSomethingElse ;
return myService ; }
Теперь я хочу протестировать свой сервис с помощью жасмина и хочу проверить, был ли вызван localService. Что-то вроде этого:
spyOn(myService,"_localService");
myService.getSomething();
expect(myService._localService).toHaveBeenCalled();
Как я могу это сделать, пожалуйста, помогите.
1 ответ
Вы должны выставить _localService
к вашим услугам или шпион не может найти его.
Потому что на самом деле вы сделали это частным, вернув myService без _localService
функция.
Таким образом, вы можете сохранить его в тайне или сделать его публичным, если он публичный, он будет работать как есть.
Если вы хотите сохранить это в тайне,
Вы не должны проверять приватную функцию, вместо этого проверяйте то, что вы ожидаете в результате вызова публичной функции. Это позволит провести рефакторинг внутренней реализации и при этом иметь тест для проверки того, что ваш код работает.