Teo*_*rov 8 jasmine karma-jasmine angular
我有一个依赖于另一个服务的服务。我想测试一下。
我的服务:
@Injectable()
export class LanguageService {
constructor(private translate: TranslateService) {
}
Run Code Online (Sandbox Code Playgroud)
我的测试:
describe('LanguageService', () => {
let service: LanguageService;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [LanguageService]
});
service = TestBed.get(LanguageService);
});
it('should set a preferred language', () => {
// Some test
});
});
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,我得到No provider for TranslateService。TranslateService 依赖于其他依赖等。
如何添加 TranslateService 依赖项?有没有办法在不列出其众多依赖项的情况下做到这一点?
问题是我在 LanguageService 中使用 ngx-translate 。它需要一些进口才能工作。在我将它们包含在内之后,效果很好。
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})],
providers: [LanguageService]
});
Run Code Online (Sandbox Code Playgroud)
您可以模拟依赖关系
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
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6774 次 |
| 最近记录: |