我有一个我想要测试的方法,如下所示:
init(): void {
this.route.params.subscribe(params => {
if (params['companyId']) {
this.companyId = params['companyId'];
} else {
this.companyId = this.user.companyId;
}
});
}
AKA,如果路由器params有一个companyId,请使用它。如果没有,请使用与用户关联的companyId。嘲笑用户很容易。但是,我不确定如何模拟参数。
你是怎么做到的?
答案 0 :(得分:0)
您可以使用RouterTestingModule。
或者如果您的组件很简单,请提供一个更简单的模拟,如下所示:
const mockRouter = {
params: new Subject<any>();
}
// add it to TestBed module in `providers` array:
{ provide: Router, useValue: mockRouter }
// use it in unit tests:
it ('should mock route params', async(() => {
const router = TestBed.get(Router);
router.parms.next({ companyId: '123' });
...
fixture.detectChanges();
expect(componentInstance.companyId).toEqual('123');
}));