Mam element kątowy 2, który reaguje na zmiany parametrów trasy (komponent nie ładuje się od zera, ponieważ nie wyprowadzamy z głównej trasy. Kod komponent:Angular 2 - test zmiany parametrów trasy
export class MyComponent{
ngOnInit() {
this._routeInfo.params.forEach((params: Params) => {
if (params['area']){
this._pageToShow =params['area'];
}
});
}
}
to działa wspaniale i _pageToShow
ustawiony jest odpowiedni na nawigacji
Próbuję przetestować zachowanie na zmianę trasy (a więc drugi spust obserwowalne ale to. odmowa pracy dla mnie.) Oto moja próba:
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");
}));
Ale to rzuca wyjątek TypeError: Cannot read property 'subscribe' of undefined
po uruchomieniu go. Jeśli uruchomię go bez linii fixture.detectChanges();
, to się nie powiedzie, ponieważ drugie oczekiwanie się nie powiedzie.
Upewnij się, aby przewinąć w dół w tym roztworze do umieszczenia na 'kleszcza() funkcji' ! Zupełnie za tym tęskniłem. Dzięki za rozwiązanie, to zadziałało dla mnie :) –
Byłem w stanie użyć tego podejścia dla 'fragment' również dla linków wewnętrznych:' fragment = nowy Temat(); ', który jest odpowiedni do ukrywania/pokazywania zawartości zakładki , na przykład. –