我的模板包含
<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 }
]
});
答案 0 :(得分:9)
问题是你实际上是在覆盖路由器进行测试,这使得它破坏了routerLink。 您可以在此处看到有关如何对测试路线进行单元化的详细说明:Angular 2 Final Release Router Unit Test
答案 1 :(得分:1)
您是否尝试将APP_BASE_HREF添加为提供商?
{provide: APP_BASE_HREF, useValue : '/' }
答案 2 :(得分:1)
我遇到了同样的错误,问题是:由于您已经拥有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 }
]
});