У меня есть компонент в угловом 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();
он терпит неудачу, поскольку второе ожидание терпит неудачу.