Я пытаюсь выполнить модульное тестирование компонента, который имеет компонент @viewChild и несколько дополнительных сервисов.
Ниже приведен мой файл spec.ts.
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ UpStoryComponent,ExperienceListComponent, MdToHtmlPipe, SafeUrlPipe, FormatUrlPipe, CurrencyFormatPipe, NoCommaPipe, MoneyPipe, SafeHtmlPipe],
imports: [ FormsModule, HttpClientTestingModule, RouterTestingModule],
providers: [{ provide: ActivatedRoute, useValue: {'params': Observable.from([{ 'id': 1}])}, ContentfulService, MatchingFlowService, FormDataService, LocalStorageService, ScrollService, Title, UpnorwayLoaderService, MoneyService, DayCalculatorService],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(UpStoryComponent);
component = fixture.componentInstance;
component.experienceListComponent = TestBed.createComponent(ExperienceListComponent).componentInstance;
fixture.detectChanges();
});
beforeEach(() => {
contentfulService = TestBed.get(ContentfulService);
spyOn(contentfulService, 'getEntryBySlug').and.callFake(function (args) {
return of(blogPost);
});
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
Последний оператор beforeeach выполняется, но не внедряет службу, как ожидалось. Если я помещаю последний оператор beforeeach в качестве второго оператора beforeeach, то текущий второй оператор beforeeach не выполняется должным образом.
Нет никакой зависимости между ExperienceListComponent
и ContentfulService
. Но при внедрении этих двух служб с помощью операторов beforeach работает только первое внедрение, а не другое.
В чем может быть причина этого? Ценю, если вы могли бы предоставить решение для этого.