开发者问题收集

监视本地函数 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