具有依赖性的角度测试服务

时间:2017-10-03 15:15:07

标签: angular jasmine karma-jasmine

我有一项依赖于其他服务的服务。我想测试它。

我的服务:

No

我的测试:

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

}

当我运行测试时,我得到没有TranslateService的提供者。 TranslateService依赖于其他依赖项等。

如何添加TranslateService依赖项?有没有办法在没有列出其众多依赖项的情况下这样做?

2 个答案:

答案 0 :(得分: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
});
});

答案 1 :(得分:0)

问题是我在我的LanguageService中使用了ngx-translate。它需要一些进口才能发挥作用。在我把它们包括在内之后它运行良好。

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