【发布时间】:2021-05-08 20:37:11
【问题描述】:
我正在尝试使用通用类模拟数据路由器快照,我们可以在其中动态添加数据而不是手动添加数据。我可以模拟数据,但它会被硬编码在我不想要的提供程序部分。
有没有相同的参考资料?
【问题讨论】:
标签: angular unit-testing
我正在尝试使用通用类模拟数据路由器快照,我们可以在其中动态添加数据而不是手动添加数据。我可以模拟数据,但它会被硬编码在我不想要的提供程序部分。
有没有相同的参考资料?
【问题讨论】:
标签: angular unit-testing
如果是测试,这是我的提议:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
MdToolbarModule,
],
providers: [
{
provide: Router,
useClass: MockRouter,
},
{
provide: ActivatedRoute,
useValue: {
data: {
subscribe: (fn: (value: Data) => void) => fn({
company: COMPANY,
}),
},
params: {
subscribe: (fn: (value: Params) => void) => fn({
tab: 0,
}),
},
snapshot: {
url: [
{
path: 'foo',
},
{
path: 'bar',
},
{
path: 'baz',
},
],
},
},
},
],
})
.overrideComponent(ConversationsComponent, {
set: {
template: '',
}
});
}));
【讨论】:
convertToParamMap 会避免一些样板文件。
您可以创建一个 mockActivateRoute 类并添加以下方法:
public class mockActivateRoute {
setParams(params){
}
setSnapshotData(data){
}
setQueryParams(params){
}
getParams(){
}
getSnapshotData(){
}
getQueryParams(){
}
}
然后在你的方法构造函数中你可以使用上面的类:
provide: ActivatedRoute,
useValue: mockActivateRoute
关注这篇文章以获得更深入的信息 https://semaphoreci.com/community/tutorials/testing-routes-in-angular-2
【讨论】: