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>();
에있는 모든 방법을 테스트하는 가장 좋은 것입니다 어떻게 더 나은 것을 할 수 있습니다 당신은? 그렇다면 모든 메소드에 대해 여전히 spyon을 가져야하고 다시 한번 메소드를 문자열로 넣으므로 형식이 강력하지 않습니다. – Diskdrive
질문에서와 같이 SpyObject에 모든 메소드가없는 경우 오류를 유발하지 않고 실제로 테스트 할 메소드 만 입력하면됩니다. –