我有一个我想要测试的方法,如下所示:
init(): void {
this.route.params.subscribe(params => {
if (params['companyId']) {
this.companyId = params['companyId'];
} else {
this.companyId = this.user.companyId;
}
});
}
AKA,如果路由器params有companyId,请使用它。如果没有,请使用与用户关联的companyId。嘲笑用户很容易。但是,我不确定如何模拟params。
你怎么做到这一点?
你可以使用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');
}));