Angular 2单元测试:无法读取未定义的属性"root"

Sal*_*ikh 7 unit-testing karma-jasmine angular

我的模板包含

<a [routerLink]="['/my-profile']" routerLinkActive="active">
    <i class="icon-user"></i>{{ 'MY_PROFILE' | translate }}
</a>
Run Code Online (Sandbox Code Playgroud)

错误是因为routerLinkrouterLinkActive指令.

单元测试文件.

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 }
    ]
});
Run Code Online (Sandbox Code Playgroud)

use*_*964 8

问题是你实际上是在覆盖路由器来进行测试,这使得它破坏了routerLink.您可以在这里看到关于如何对测试路线进行单元化的一个很好的解释:Angular 2最终版本路由器单元测试


小智 1

您是否尝试将 APP_BASE_HREF 添加为提供程序?

{provide: APP_BASE_HREF, useValue : '/' }
Run Code Online (Sandbox Code Playgroud)