我有一个 angular 2 中的组件,它响应路由参数的变化(该组件不会从头开始重新加载,因为我们没有移出主路由。这是组件代码:
export class MyComponent{
ngOnInit() {
this._routeInfo.params.forEach((params: Params) => {
if (params['area']){
this._pageToShow =params['area'];
}
});
}
}
这是一种享受,并且_pageToShow
在导航上设置适当。
我正在尝试测试更改路线的行为(因此第二次触发可观察但它拒绝为我工作。)这是我的尝试:
it('sets PageToShow to new area if params.area is changed', fakeAsync(() => {
let routes : Params[] = [{ 'area': "Terry" }];
TestBed.overrideComponent(MyComponent, {
set: {
providers: [{ provide: ActivatedRoute,
useValue: { 'params': Observable.from(routes)}}]
}
});
let fixture = TestBed.createComponent(MyComponent);
let comp = fixture.componentInstance;
let route: ActivatedRoute = fixture.debugElement.injector.get(ActivatedRoute);
comp.ngOnInit();
expect(comp.PageToShow).toBe("Terry");
routes.splice(2,0,{ 'area': "Billy" });
fixture.detectChanges();
expect(comp.PageToShow).toBe("Billy");
}));
TypeError: Cannot read property 'subscribe' of undefined
但是当我运行它时会引发异常。如果我在没有这fixture.detectChanges();
条线的情况下运行它,它会因为第二个期望失败而失败。