2017-10-03 5 views
2

다른 서비스에 의존하는 서비스가 있습니다. 나는 그것을 시험하고 싶다.종속성이있는 각도 테스트 서비스

내 서비스 :

@Injectable() 
export class LanguageService { 
constructor(private translate: TranslateService) { 

} 

내 테스트 : 나는 테스트를 실행하면

describe('LanguageService',() => { 
let service: LanguageService; 
beforeEach(() => { 
TestBed.configureTestingModule({ 
    providers: [LanguageService] 
}); 

service = TestBed.get(LanguageService); 
}); 

it('should set a preferred language',() => { 
    // Some test 
}); 
}); 

내가 TranslateService 없음 제공자를 얻을. TranslateService는 다른 의존성에 의존한다.

어떻게 TranslateService 의존성을 추가 할 수 있습니까? 수많은 종속성을 나열하지 않고도이를 수행 할 수있는 방법이 있습니까?

답변

0

문제는 내 LanguageService 내부 NGX-번역 사용 된 것이 었습니다을 조롱 할 수 있습니다. 일하기 위해서는 수입이 필요합니다. 내가 그들을 포함 시켰 더라면 그것은 잘 움직이게되었다.

beforeEach(() => { 
TestBed.configureTestingModule({ 
    imports: [HttpClientModule, 
    TranslateModule.forRoot({ 
     loader: { 
     provide: TranslateLoader, 
     useFactory: HttpLoaderFactory, 
     deps: [HttpClient] 
     } 
    })], 
    providers: [LanguageService] 
}); 
2

당신은 의존성

describe('LanguageService',() => { 
let service: LanguageService; 
class fakeService {}; 
beforeEach(() => { 
TestBed.configureTestingModule({ 
    providers: [LanguageService, {provide: TranslateService, useValue: fakeService}], 
}); 

service = TestBed.get(LanguageService); 
}); 

it('should set a preferred language',() => { 
    // Some test 
}); 
}); 
+0

감사합니다. 여하튼, 조롱은 나를 위해 작동하지 않았다. 나는 "undefined가 객체가 아니다"라는 것을 가지고있다. 나는 그것을 고치고 싶다. TestBed에서 일부 수입품이 누락되었습니다. –

+0

질문에 대한 답변을 닫을 수 있습니까? –