Я довольно новичок в Angular / Typescript. И так как я запускаю новое приложение, я также погружаюсь в модульное тестирование компонентов и сервисов. Большинство моих компонентов используют DI для сервисов. При тестировании этих компонентов мне нужно не только предоставить имитационный сервис, например, для моего UserService, но и предоставить классы для всех зависимостей, которые использует UserService. У меня это работает, но я повторно использую список провайдеров opf в нескольких файлах Unit Test. Как программист мне это не нравится, и я хотел бы повторно использовать (часть) этого списка, хотя бы сказать константу.
Код ниже - это то, что я использую. Моя проблема касается провайдеров: []. Большинство из них необходимы для каждой спецификации, за исключением нескольких услуг.
describe('HeaderMenuComponent', () => {
let component: HeaderMenuComponent;
let fixture: ComponentFixture<HeaderMenuComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [HeaderMenuComponent],
imports: [
CookieModule.forRoot(),
HttpClientModule,
HttpModule,
RouterTestingModule
],
providers: [CookieService, CookieModule, CookieOptionsProvider, BaseService, AuthenticationService,
{ provide: XHRBackend, useClass: MockBackend },
{ provide: ConfigurationService, useClass: ConfigurationMockService },
{ provide: UserService, useClass: UserMockService },
{
// Here we request that configuration loading be done at app-
// initialization time (prior to rendering)
provide: APP_INITIALIZER,
useFactory: (configService: ConfigurationService) =>
() => configService.loadConfigurationData(),
deps: [ConfigurationService],
multi: true
},
{ provide: 'BASE_URL', useFactory: '', deps: [] }]
})
.compileComponents();
}));
Мне бы хотелось, чтобы код выглядел примерно так, где DefaultProvidersList содержит провайдеров, повторно используемых в нескольких тестах, а также Сервисы 1 и 2, специфичные для текущего файла .:
providers: [DefaultProvidersList, Service1, Service2]