我需要检查我的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);
});
}));
答案 0 :(得分:1)
所以我解决的方法是创建RouteSegment并将其直接传递给方法,这允许我检查该方法是否有效,这不是我想要测试它的方式,因为我想确保在组件/路由加载时也触发了routerOnActivate。但它是一个开始。
let segments = new RouteSegment([], {'uniqueId': 1234}, null, null, null);
componentInstance.routerOnActivate(segments);