2017-05-12 1 views
2

각도 응용 프로그램의 단위 테스트를 작성 중이며 스파이 사용 방법을 배우고 있습니다.CreateSpyObj를 사용하여 클래스의 모든 메소드에 대한 스파이를 만드는 방법이 있습니까?

현재 내 구성 요소를 사용하는 모든 서비스는,이 작동하지만, 내 스파이를 설정하는 가장 좋은 방법은 아닌 것 같아이

let fakeMyService = jasmine.createSpyObj('fakeMyService', ['method1', 'method2']); 
fakeMyService.method1.and.returnValue(Observable.of()); 
fakeMyService.method2.and.returnValue(Observable.of()); 

TestBed.configureTestingModule({ 
     declarations: [MyComponent], 
     providers: [ 
     { provide: MyService, useValue: fakeMyService } 
     ] 
    }).compileComponents(); 

같은 것을 작성해야합니다. 필자는 MyService에서 간첩을 넣을 모든 단일 함수를 입력해야합니다. 둘째, 강력하게 형식화되지 않았습니다. 그래서 내가 이름을 바꾸면, 나는 즉시 알지 못할 것이다. 그리고 나서, 나는 모든 곳에서 그것을 새롭게해야 할 것이다.

클래스를 지정할 수있는 방법이 있습니까? 모든 메소드에 대해 스파이가 자동으로 가짜 클래스를 반환합니다.

그래서이

let fakeMyService = jasmine.createSpyObj<MyService>(); 

답변

-1

같은 단지 SpyOn (서비스 방법) 대신 있지만 서비스/모듈/공장

+0

에있는 모든 방법을 테스트하는 가장 좋은 것입니다 어떻게 더 나은 것을 할 수 있습니다 당신은? 그렇다면 모든 메소드에 대해 여전히 spyon을 가져야하고 다시 한번 메소드를 문자열로 넣으므로 형식이 강력하지 않습니다. – Diskdrive

+0

질문에서와 같이 SpyObject에 모든 메소드가없는 경우 오류를 유발하지 않고 실제로 테스트 할 메소드 만 입력하면됩니다. –