监视本地函数 Angular 服务
Spy on a local function 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 ; }
现在我想用 jasmine 测试我的服务,我想测试是否调用了 localService。
像这样:
spyOn(myService,"_localService");
myService.getSomething();
expect(myService._localService).toHaveBeenCalled();
我该怎么做,请帮忙。
你必须在你的服务中暴露 _localService
否则间谍找不到它。
因为实际上您通过返回 myService 而不使用 _localService
函数将其设为私有。
因此您可以将其设为私有,或者设为 public,如果它是 public,它将按原样工作。
如果你想保密,那么,
你不应该测试私有函数,而是测试你期望调用 public 函数的结果。它将允许重构内部实现,并且仍然有测试来检查您的代码是否有效。
我有一个 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();
我该怎么做,请帮忙。
你必须在你的服务中暴露 _localService
否则间谍找不到它。
因为实际上您通过返回 myService 而不使用 _localService
函数将其设为私有。
因此您可以将其设为私有,或者设为 public,如果它是 public,它将按原样工作。
如果你想保密,那么,
你不应该测试私有函数,而是测试你期望调用 public 函数的结果。它将允许重构内部实现,并且仍然有测试来检查您的代码是否有效。