2016-05-16 7 views
0

routerOnActivateメソッドが正しく呼び出されているかどうかを確認する必要がありますが、パラメータを渡す必要がありますが、これを行う方法に関するドキュメントは見つかりません。angular2でのrouterOnActivateのテスト

簡単にするために、この方法は、

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

} 

を言うと私は私が解決した方法はRouteSegmentを作成し、直接メソッドにそれを渡すことだったので、

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

のような何かをしたいですこれにより、メソッドが動作するかどうかを確認することができます。コンポーネント/ルートがロードされたときにrouterOnActivateも起動されたことを確認したかったので、テストする方法は正確ではありません。しかし、それは始まりです。

let segments = new RouteSegment([], {'uniqueId': 1234}, null, null, null); 
componentInstance.routerOnActivate(segments); 
関連する問題