我的应用程序中有一个个人资料页。如果URL中包含id,代码将查找该id。如果没有id,但用户已登录,则显示已登录用户的配置文件。
问题是,当我需要测试这段代码时,我可以模拟paramMap来返回值或不返回值。我需要能够在同一个测试文件中编写测试,模拟URL中的参数以及没有参数时的情况。在我看来,这应该是一个常见的问题。如何编写测试来实现这一点?我是否只需要在提供不同参数映射的文件中有单独的规范文件或单独的测试台?
public ActivatedRouteStub() {
return { 'snapshot': {
'url': [{ 'path': 1 }, { 'path': 2 }],
'paramMap' : {
'get' : ()=>{ return '1'},
'set' : ()=>{},
}
}
}
}
显然,ts代码会查看URL中的参数,所有内容都会从那里开始。
this.userId = this.route.snapshot.paramMap.get('id');
// No user defined by URL or by login
if ( ( (this.userId == '') || ( this.userId === null ) ) &&
.....