Reputation: 1023
I have a service which depends on another service. I want to test it.
My Service:
@Injectable()
export class LanguageService {
constructor(private translate: TranslateService) {
}
My Test:
describe('LanguageService', () => {
let service: LanguageService;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [LanguageService]
});
service = TestBed.get(LanguageService);
});
it('should set a preferred language', () => {
// Some test
});
});
When I run the test I get No provider for TranslateService. TranslateService depends on other dependencies and so on.
How can I add TranslateService dependency? Is there a way to do it without listing its numerous dependencies too?
Upvotes: 10
Views: 9376
Reputation: 1023
The problem was that I was using ngx-translate inside my LanguageService. It needs some imports in order to work. After I've included them it worked fine.
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})],
providers: [LanguageService]
});
Upvotes: 5
Reputation: 4821
You can mock the dependency
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
});
});
Upvotes: 2