У меня есть компонент меню, который является родительским компонентом, который загружает другой внутренний компонент.
Я смоделировал все входы и службы, я также шпионил за router.navigate, поэтому он предотвращает загрузкуновые компоненты. Это работает во всех других компонентах без проблем.
Теперь в компоненте menubar выскакивает ошибка: «Ошибка при очистке компонента».
Затем загружается дочерний компонент, который возвращаетсязагружает другое приложение онлайн.Это нарушает тесты и выдает ошибки.
Я могу предотвратить загрузку дочерних компонентов во всех других компонентах, кроме компонента menubar.Есть ли способ, которым я могу предотвратить это.
(примечание: я пишу тест для уже разработанного приложения. Это делает вещи сложными).
Пересмешивание компонентов с помощью overrideComponent ()
no_errors_schema
Создание ложного класса с тем же именем, что и у дочернего компонента, и указание его в части объявлений
menubarcomponent.spec.ts
describe('UNIT TEST : MenubarComponent', () => {
let component:MenubarComponent;
let fixture: ComponentFixture<MenubarComponent>;
let router, layoutSvc, auth, orgSettings, user, loginSvc;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [TestModule],
declarations: [],
providers: [{ provide: AuthService,useClass:AuthServiceMock}],
schemas: [NO_ERRORS_SCHEMA]
})
.compileComponents(); }));
beforeEach(() => {
fixture = TestBed.createComponent(MenubarComponent);
component = fixture.componentInstance;
router = fixture.debugElement.injector.get(Router);
layoutSvc = fixture.debugElement.injector.get(LayoutService);
auth = fixture.debugElement.injector.get(AuthService);
fixture.debugElement.injector.get(SettingsService);
user = fixture.debugElement.injector.get(UserService);
loginSvc = fixture.debugElement.injector.get(LoginService);
spyOn(router, 'navigateByUrl');
spyOn(router, 'navigate');
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
html
<app-monthly-plan-expire-soon></app-monthly-plan-expire-soon>
дочерний компонент называется так, и он загружает другое приложение в реальном времени в Интернете.
Компонент Menubar должен запускать тесты без ошибок и незагрузить любые дочерние компоненты.