我正在努力弄清楚如何限制角度的激活路线来满足我的目的。在我的一个组件中,我使用路由快照来获取激活路由的一部分网址:
let activatedPath = this.route.snapshot.children[0].url[0].path;
在我的测试中,我收到错误:
Error: Error in :0:0 caused by: undefined is not an object (evaluating 'this.route.snapshot.children[0].url')
所以我认为我需要存根激活路线:
class FakeActivatedRoute {
// stub detail goes here
}
并在我的测试中提供:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [
SiteAdminComponent
],
schemas: [NO_ERRORS_SCHEMA],
providers: [
{ provide: ActivatedRoute, useClass: FakeActivatedRoute }
]
})
.compileComponents();
}));
任何人都可以提供关于存根实现的任何指导,这将允许我到达.snapshot.children[0].url[0].path
吗?我现在很快就没有了: - )
答案 0 :(得分:4)
您应该可以执行以下操作:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [
SiteAdminComponent
],
schemas: [NO_ERRORS_SCHEMA],
providers: [
{
provide: ActivatedRoute,
useValue: {snapshot: {children: [{url: ['your/path/here']}]}}
}
]
})
.compileComponents();
}));
通过这种方式,您将提供一个模拟的activateRoute对象,该对象将回答这个完全相同的层次结构。