私のテンプレートには
<a [routerLink]="['/my-profile']" routerLinkActive="active">
<i class="icon-user"></i>{{ 'MY_PROFILE' | translate }}
</a>
エラーは、routerLink
およびrouterLinkActive
ディレクティブが原因です。
ユニットテストファイル。
TestBed.configureTestingModule({
imports: [
MultilingualModule, CommonModule,
RouterTestingModule.withRoutes([
{ path: 'my-profile', component: MockComponent },
{ path: 'change-password', component: MockComponent },
])
],
schemas: [ NO_ERRORS_SCHEMA ],
declarations: [TopNavigationBarComponent, TestComponent,MockComponent],
providers: [
{ provide: LoginService, useValue: MockLoginService },
{ provide: Router, useClass: RouterStub }
]
});
問題は、実際にルーターをオーバーライドしてテストを行い、routerLinkが壊れることです。ルートをユニットテストする方法についての良い説明は次のとおりです。 Angular 2 Final Release Router Unit Test
私は同じエラーに直面していました、問題は次のとおりです:あなたはすでにdeclarations: [...TestComponent...]
providers
を追加する必要はありません。
単体テストファイルは次のようになります。
TestBed.configureTestingModule({
imports: [
MultilingualModule, CommonModule,
RouterTestingModule.withRoutes([
{
path: 'my-profile',
component: MockComponent
},
{
path: 'change-password',
component: MockComponent
},
])],
schemas: [ NO_ERRORS_SCHEMA ],
declarations: [TopNavigationBarComponent, TestComponent, MockComponent],
providers: [
{ provide: LoginService, useValue: MockLoginService }
]
});
APP_BASE_HREFをプロバイダーとして追加しようとしましたか?
{provide: APP_BASE_HREF, useValue : '/' }