Тестовый маршрут в Angular6

Я новичок в Angular6, где хочу проверить свою маршрутизацию, но получил сообщение об ошибке:

Ошибка: компонент HomeComponent не является частью какого-либо NgModule или модуль не был импортирован в ваш модуль.

Я не понимаю, как у меня это получилось, если я уже импортировал HomeComponent в свой app-routing.module.ts.

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { HomeComponent } from './home/home.component';

export const routes: Routes = [
  { path: '', redirectTo: 'home', pathMatch: 'full' },
  { path: 'home', component: HomeComponent } 
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

export const routingComponents = [
  HomeComponent
]

в моем app.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { HomeComponent } from './home/home.component';

export const routes: Routes = [
  { path: '', redirectTo: 'home', pathMatch: 'full' },
  { path: 'home', component: HomeComponent } 
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

export const routingComponents = [
  HomeComponent
]

app.component.spec.ts

import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';

import { AppComponent } from './app.component';
import { routes } from './app-routing.module';

describe('AppComponent', () => {
  let component: AppComponent;
  let fixture: ComponentFixture<AppComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        RouterTestingModule.withRoutes(routes);
      ],
      declarations: [
        AppComponent
      ],
    }).compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(AppComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create the app', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app).toBeTruthy();
  }));

  it("should have as title 'ba-dashboard'", async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app.title).toEqual('ba-dashboard');
  }));

});

Ошибка появляется, когда я добавляю .withRoutes(routes) в свой app.component.spec.ts.


person gentlyawesome    schedule 09.08.2018    source источник
comment
Вы должны добавить импорт HomeComponent в файл app.component.spec.ts.   -  person Jayampathy Wijesena    schedule 10.09.2018


Ответы (3)


У вас отсутствует HomeComponent в тестовых объявлениях, и, как печально выше, у вас отсутствует HomeComponent в объявлениях app.module.

import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';

import { HomeComponent } from './home.component';
import { AppComponent } from './app.component';
import { routes } from './app-routing.module';

describe('AppComponent', () => {
  let component: AppComponent;
  let fixture: ComponentFixture<AppComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        RouterTestingModule.withRoutes(routes);
      ],
      declarations: [
        AppComponent,
        HomeComponent // missing declaration
      ],
    }).compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(AppComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create the app', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app).toBeTruthy();
  }));

  it("should have as title 'ba-dashboard'", async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app.title).toEqual('ba-dashboard');
  }));

});
person josip    schedule 09.08.2018

вам не хватает объявления в вашем файле app.module.ts

@NgModule({
  declarations: [
       HomeComponent 
]
})
person Puneet    schedule 09.08.2018

Вы должны добавить домашний компонент в качестве объявления в @NgModule

 @NgModule({ 
     imports: [RouterModule.forRoot(routes)], 
     exports: [RouterModule],   
     declarations: [HomeComponent]
 })
person Mustafa    schedule 22.08.2019