Eckige 2 - test für den Wandel in der route, params

Habe ich eine Komponente im Winkel 2, die reagiert auf änderungen in der route-Parameter (Komponente laden nicht von Grund auf, weil wir nicht verschieben die Hauptroute. Hier ist die Komponente-code:

export class MyComponent{
    ngOnInit() {
        this._routeInfo.params.forEach((params: Params) => {
            if (params['area']){
                this._pageToShow =params['area'];
            }
        });
    }
}

Diesem Werk behandeln und _pageToShow festgelegt ist, angemessen auf die navigation.

Ich versuche zu testen, die Verhalten auf eine Veränderung der route (also einen zweiten Auslöser der beobachtbaren, aber es ist die Weigerung, zu arbeiten für mich.) Hier ist mein Versuch:

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");
}));

Aber das wirft ein TypeError: Cannot read property 'subscribe' of undefined Ausnahme, wenn ich ihn laufen. Wenn ich es ohne die fixture.detectChanges(); Linie, auf der es nicht wie die zweite Erwartung schlägt fehl.

InformationsquelleAutor Stu | 2016-10-26
Schreibe einen Kommentar