在angular2中测试routerOnActivate

时间:2016-05-16 13:00:55

标签: typescript angular

我需要检查我的routerOnActivate方法是否被正确调用但是需要传入params,但是我找不到任何关于如何执行此操作的文档。

为简单起见,方法是

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 个答案:

答案 0 :(得分:1)

所以我解决的方法是创建RouteSegment并将其直接传递给方法,这允许我检查该方法是否有效,这不是我想要测试它的方式,因为我想确保在组件/路由加载时也触发了routerOnActivate。但它是一个开始。

let segments = new RouteSegment([], {'uniqueId': 1234}, null, null, null);
componentInstance.routerOnActivate(segments);