Angular e2e - должен отображать заголовок в теге h1

Я разрабатываю свой собственный сайт. Я новичок в Angular и, основываясь только на обучающих и онлайн-постах, я начал разработку своего сайта. Во время выполнения тестов я столкнулся с ошибкой при получении значения тега h1.

Я разработал маршруты. Один из маршрутов, которые загружает AppComponent, - это HomeComponent, в котором доступен тег h1.

В файле app.component.spec.ts ниже не удалось получить значение h1.

it('should render title in a h1 tag', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector('h1').textContent).toContain('Welcome to jc-web!');});

Может кто-нибудь предложить, как я могу получить значение h1 из HomeComponent в приведенном выше коде?

Ценю твою помощь.

3 ответа

Решение

Чтобы получить доступ к значению h1 внутри HomeComponent, которое вложено в AppComponent, вам нужно либо предоставить фактический HomeComponent в свой TestBed:

TestBed.configureTestingModule({
    declarations: [
        AppComponent,
        HomeComponent
    ]
});

или предоставьте версию для вашего теста. Если вы решите предоставить фактический компонент, вы также должны включить все его зависимости. Более подробное объяснение о том, как тестировать вложенные компоненты в документации Angular здесь.

Вам просто нужно добавить следующий код в файл app.component.ts.

заголовок = 'заголовок';

      it(`should have as title 'the title'`, () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app.title).toEqual('the title');

});

Это в файле app.component.spec.ts

      export class AppComponent {
title = ‘the title’ ;
}

Это в файле app.component.ts

Вам просто нужно добавить следующий код в файл app.component.ts.

заголовок = 'заголовок';

app.component.spec.ts app.component.ts

Вам нужно внести изменения в 2 файла, и код будет работать нормально.

Другие вопросы по тегам