我有一项服务依赖于另一项服务。我想测试一下。
我的服务:
@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
});
});当我运行测试时,我得到了No provider for TranslateService。TranslateService依赖于其他依赖项,等等。
如何添加TranslateService依赖项?有没有办法做到这一点,而不列出它的众多依赖呢?
发布于 2017-10-04 07:12:38
问题是我在LanguageService中使用的是ngx翻译。它需要一些进口才能工作。在我把它们包括进去之后,一切都很顺利。
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})],
providers: [LanguageService]
});发布于 2017-10-03 15:19:27
您可以模拟依赖项。
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
});
});https://stackoverflow.com/questions/46547954
复制相似问题