监视本地函数 Angular Service
2015-01-16
1237
我有一个使用本地函数的 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 ; }
现在我想用 jasmine 测试我的服务,我想测试 localService 是否已被调用。 类似这样的:
spyOn(myService,"_localService");
myService.getSomething();
expect(myService._localService).toHaveBeenCalled();
我该怎么做,请帮忙。
1个回答
您必须在服务中公开
_localService
,否则间谍无法找到它。
因为实际上您通过返回没有
_localService
函数的 myService 将其设为私有。
因此您可以将其保持私有,也可以将其设为公开,如果是公开的,它将按原样工作。
如果您想将其保持私有,那么
您不应该测试私有函数,而是测试您对公共函数调用的期望结果。它将允许重构内部实现,并且仍然有测试来检查您的代码是否有效。
Boris Charpentier
2015-01-18