gpt4 book ai didi

Angular Mock ActivatedRoute 使用 Snapshot 和 ParamMap

转载 作者:行者123 更新时间:2023-12-03 15:13:56 24 4
gpt4 key购买 nike

我正在使用这个,来自 here :

constructor(private heroService: HeroService,
private activatedRoute: ActivatedRoute) {
}

ngOnInit() {
const heroId = this.activatedRoute.snapshot.paramMap.get('id');
this.heroService.getHeroById(heroId).subscribe((hero: Hero) => {
...
});
}

现在我有一个单元测试需要模拟这个 ActivatedRoute。我已经在 stackoverflow 中检查了一些答案,但没有运气。

请注意,我使用的是 snapshot.paramMap 这么多解决方案根本不起作用。例如, this , this , 和 this不工作。

我认为近乎有效的答案可能是:
{
provide: ActivatedRoute,
useValue: {paramMap: Observable.of(convertToParamMap({id: 1}))}
}

但也不起作用。

显示的错误是:
Error: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'ng:///HeroesModule/HeroDetailComponent_Host.ngfactory.js'.
error properties: Object({ INDEX_SIZE_ERR: 1, DOMSTRING_SIZE_ERR: 2, HIERARCHY_REQUEST_ERR: 3, WRONG_DOCUMENT_ERR: 4, INVALID_CHARACTER_ERR: 5, NO_DATA_ALLOWED_ERR: 6, NO_MODIFICATION_ALLOWED_ERR: 7, NOT_FOUND_ERR: 8, NOT_SUPPORTED_ERR: 9, INUSE_ATTRIBUTE_ERR: 10, INVALID_STATE_ERR: 11, SYNTAX_ERR: 12, INVALID_MODIFICATION_ERR: 13, NAMESPACE_ERR: 14, INVALID_ACCESS_ERR: 15, VALIDATION_ERR: 16, TYPE_MISMATCH_ERR: 17, SECURITY_ERR: 18, NETWORK_ERR: 19, ABORT_ERR: 20, URL_MISMATCH_ERR: 21, QUOTA_EXCEEDED_ERR: 22, TIMEOUT_ERR: 23, INVALID_NODE_TYPE_ERR: 24, DATA_CLONE_ERR: 25, code: 19 })

这是因为我正在执行一个响应状态为 500 的请求,因为 paramMap 未定义 所以请求中没有id。

... 有任何想法吗?

谢谢和BR

最佳答案

将快照添加到 useValue 中,例如:

{
provide: ActivatedRoute,
useValue: {
snapshot: {
paramMap: convertToParamMap({
id: '1'
})
}
}
}

关于Angular Mock ActivatedRoute 使用 Snapshot 和 ParamMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49917588/

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