2016-05-16 2 views
0

Мне нужно проверить, что мой routerOnActivate метод вызывается правильно, но ему необходимо передать параметры, однако я не могу найти документацию о том, как это сделать.Тестирование routerOnActivate в angular2

Для простоты этот метод сказать

routerOnActivate(curr: RouteSegment): void { 
    this.uniqueId = curr.getParam('uniqueId'); 

} 

и я хочу сделать что-то вроде

it('should work', inject([TestComponentBuilder, MockBackend], (tcb: TestComponentBuilder, mockBackend: MockBackend) => { 
tcb.createAsync(TestComponent) 
    .then((rootTC:any) => { 
     let componentInstance = rootTC.debugElement.children[0].componentInstance; 
     spyOn(componentInstance, 'routerOnActivate'); 
     mockBackend.connections.subscribe((connection: any) => { 
      connection.mockRespond(new Response(new ResponseOptions({ 
       status: 200, 
       body: JSON.stringify({message:'found'}) 
      }))); 
     }); 
     rootTC.detectChanges(); 
     expect(componentInstance.routerOnActivate).toHaveBeenCalled(); 
     expect(componentInstance.uniqueId).toBe(123); 
    }); 
})); 

ответ

1

Так как я уже решен было создать RouteSegment и передать в метод непосредственно, это позволяет мне проверить, работает ли этот метод, а не точно, как я хотел его протестировать, так как я хотел убедиться, что routerOnActivate также был запущен при загрузке компонента/маршрута. Но это начало.

let segments = new RouteSegment([], {'uniqueId': 1234}, null, null, null); 
componentInstance.routerOnActivate(segments); 
Смежные вопросы