Следите за местной функцией 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 функция.

Таким образом, вы можете сохранить его в тайне или сделать его публичным, если он публичный, он будет работать как есть.

Если вы хотите сохранить это в тайне,

Вы не должны проверять приватную функцию, вместо этого проверяйте то, что вы ожидаете в результате вызова публичной функции. Это позволит провести рефакторинг внутренней реализации и при этом иметь тест для проверки того, что ваш код работает.

Другие вопросы по тегам