2015-01-16 6 views
0

로컬 기능에 대한 스파이 :내가 각도 서비스 로컬 기능을 사용하여 다음과 같은 작업을 수행해야 각도 서비스

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(); 

내가 그렇게 할 수있는 방법, 도와주세요.

+0

지금까지이 목표를 향해 구체적인 시도를 해본 적이 있습니까? {this._localService가 ('someTable') }' 이 작동하지 않습니다 :( 자스민 찾을 수없는 'var에 _getSomething = 함수() : – rchang

+0

내가 키 "이"을 추가 이런 식으로 LOCALSERVICE 전화를 시도 서비스의 속성으로서의 localService – Sifis

답변

1

귀하의 서비스에 _localService을 노출해야합니다. 그렇지 않으면 스파이가 그것을 찾을 수 없습니다.

사실 내 _localService 함수없이 myService를 반환하여 비공개로 설정했기 때문입니다.

그래서 공개로 설정하면 비공개로 유지하거나 공개 할 수 있습니다.

그런 다음, 개인을 유지하려면

,

대신 공용 함수의 호출 결과로 기대 테스트, 개인 기능을 테스트해서는 안된다. 내부 구현을 리팩토링하고 여전히 코드가 작동하는지 테스트 할 수 있습니다.