각도 서비스를 테스트하는 데 문제가 있습니다. 이 서비스가 올바르게 주입 된 다른 서비스를 호출하는지 확인하고 싶습니다.jasmine angular2를 사용하여 개인 서비스로 유닛 테스트를 실시했습니다.
ServiceToTest의 .service.ts
@Injectable()
export class ServiceToTest {
constructor(private _si: ServiceInjected) {}
public init() {
this._si.configure();
}
}
ServiceInjected.service.ts
@Injectable()
export class ServiceInjected {
constructor() {}
public configure() {
/*Some actions*/
}
}
내가 ServiceInjected을 주입이 ServiceToTest가 있다고 가정하자 이러한 서비스와
은, 지금은 내 단위 테스트를 작성 :
const serviceInjectedStub = {
configure(): void {}
}
describe('ServiceToTest service Test',() => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [ServiceToTest ,
{ provide: ServiceInjected, useValue: serviceInjectedStub }]
});
});
it('should be initialize the service injected', inject([ServiceToTest],
(tService: ServiceToTest) => {
spyOn(serviceInjectedStub, 'configure');
tService.init();
expect(serviceInjectedStub.configure).toHaveBeenCalled();
}));
그러나 나는 다음과 같은 오류가 나타납니다
예상 스파이 구성하는 방법을 가 호출되었습니다.
private _si: ServiceInjected by public si: ServiceInjected
이 https://github.com/angular/angular/issues/10788 참조 그것에 당신의 테스트 베드
그리고 테스트에서 서비스를 가져옵니다. 당신은 단순히 실제 서비스와 스파이를 주입 할 수 있습니다. 또는 DI를 전혀 사용하지 않고'new ServiceToTest (stub)'을 사용하여 서비스를 테스트하십시오. 또는 문제에서 설명한대로 useFactory를 사용하십시오. –