gpt4 book ai didi

Angular 单元测试模拟 paramMap 获取

转载 作者:行者123 更新时间:2023-12-04 01:50:16 29 4
gpt4 key购买 nike

我有一个代表列表中项目的组件,为了得到这个项目,我使用 this.route.snapshot.paramMap.get('id') .我如何 mock 这个?
我试过了

providers: [
{
provide: ActivatedRoute,
useValue: { snapshot: { params: convertToParamMap({ id: '1' }) } }
}
]

但这导致

TypeError: Cannot read property 'get' of undefined

最佳答案

你提供
{ snapshot: { params: convertToParamMap({ id: '1' }) } 所以它的 snapshot.params
当您尝试通过 this.route.snapshot.paramMap 访问它时

如您所见,没有 paramMap在你的模拟中。

您提供对象作为“值”这一事实并不意味着该对象将自动成为 ActivatedRoute 的实例。 .它就是你定义的 - 普通对象。没有运行时类型控制,所以这是允许的。

您可以简单地提供部分实现,例如

 useValue: { snapshot: { paramMap: {get:(id:number)=>{id:1}}}}

或者在你的组件中为这个属性设置 getter - 这将允许你 spy在那个 getter 调用中,拦截它并返回所需的值。

关于Angular 单元测试模拟 paramMap 获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53479797/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com