Ошибка тестирования Angular 5 и 6: не удалось загрузить сводку для директивы AppComponent

При запуске ng test я получаю сообщение об ошибке:

Error: Illegal state: Could not load the summary for directive AppComponent.

Я не уверен, почему я получаю эту ошибку, поскольку я ссылаюсь и объявляю AppComponent.

Это мой app.component.spec.ts

import { ComponentFixture, TestBed } from "@angular/core/testing";
import { NO_ERRORS_SCHEMA } from "@angular/core";
import { Router } from "@angular/router";
import { ProjectService } from "../../shared/service/project/project.service";
import { AppComponent } from "./app.component";

describe("AppComponent", () => {
    let comp: AppComponent;
    let fixture: ComponentFixture<AppComponent>;

    beforeEach(() => {
        const routerStub = {
            navigate: () => ({})
        };
        const projectServiceStub = {
            GetActiveProject: () => ({
                name: {}
            })
        };
        TestBed.configureTestingModule({
            declarations: [ AppComponent ],
            schemas: [ NO_ERRORS_SCHEMA ],
            providers: [
                { provide: Router, useValue: routerStub },
                { provide: ProjectService, useValue: projectServiceStub }
            ]
        });
        fixture = TestBed.createComponent(AppComponent);
        comp = fixture.componentInstance;
    });

    it("can load instance", () => {
        expect(comp).toBeTruthy();
    });

    describe("ngOnInit", () => {
        it("makes expected calls", () => {
            const routerStub: Router = fixture.debugElement.injector.get(Router);
            const projectServiceStub: ProjectService = fixture.debugElement.injector.get(ProjectService);
            spyOn(routerStub, "navigate");
            spyOn(projectServiceStub, "GetActiveProject");
            comp.ngOnInit();
            expect(routerStub.navigate).toHaveBeenCalled();
            expect(projectServiceStub.GetActiveProject).toHaveBeenCalled();
        });
    });

});

Почему он выдает эту ошибку и как я могу исправить эту ошибку?

РЕДАКТИРОВАТЬ: я использую файлы tsconfig и tsconfig.spec Angular CLI по умолчанию. Тем временем я обновился до Angular 6, я получаю ошибку sam. Даже создание нового проекта с чистыми конфигурационными файлами и замена папки src не устранили ошибку.


person Kars Barendrecht    schedule 29.05.2018    source источник
comment
У вас есть конкретная причина, по которой вы используете релиз-кандидат двухлетней давности?   -  person Jens Habegger    schedule 29.05.2018
comment
@JensHabegger Плохо, на самом деле это не rc5, это 5.2.10. Обновлю тег.   -  person Kars Barendrecht    schedule 29.05.2018
comment
Вы устанавливаете собственное значение для skipTemplateCodeGen в своем tsconfig?   -  person Jens Habegger    schedule 29.05.2018
comment
@JensHabegger Нет, используя файлы конфигурации angular-cli по умолчанию.   -  person Kars Barendrecht    schedule 29.05.2018


Ответы (1)


Сочетание этих настроек конфликтует:

    declarations: [ AppComponent ],
    schemas: [ NO_ERRORS_SCHEMA ],

AppComponent ссылался на другой компонент, который не удалось найти тестовому модулю. Схема без ошибок скрыла фактическую ошибку, которая была в AppComponent, но показала ошибку, связанную с самим AppComponent, поскольку он не мог быть правильно загружен.

Чтобы решить эту проблему, вы можете либо убедиться, что указан каждый дочерний компонент, либо импортировать весь модуль как таковой:

    import: [ AppModule ],
person Kars Barendrecht    schedule 31.05.2018