gpt4 book ai didi

unit-testing - 如何对依赖于 ActivatedRoute 参数的组件进行单元测试?

转载 作者:太空狗 更新时间:2023-10-29 16:45:56 37 4
gpt4 key购买 nike

我正在对用于编辑对象的组件进行单元测试。该对象具有唯一的 id,用于从服务中托管的对象数组中获取特定对象。具体的id是通过路由传递的参数获取的,具体是通过ActivatedRoute类。

构造函数如下:

constructor(private _router:Router, private _curRoute:ActivatedRoute, private _session:Session) {}

ngOnInit() {
this._curRoute.params.subscribe(params => {
this.userId = params['id'];
this.userObj = this._session.allUsers.filter(user => user.id.toString() === this.userId.toString())[0];

我想在此组件上运行基本的单元测试。但是,我不确定如何注入(inject) id 参数,并且组件需要这个参数。

顺便说一句:我已经为 Session 服务创建了一个 mock,所以不用担心。

最佳答案

执行此操作的最简单方法是仅使用 useValue 属性并提供一个包含您要模拟的值的 Observable。

RxJS < 6

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
...
{
provide: ActivatedRoute,
useValue: {
params: Observable.of({id: 123})
}
}

RxJS >= 6

import { of } from 'rxjs';
...
{
provide: ActivatedRoute,
useValue: {
params: of({id: 123})
}
}

关于unit-testing - 如何对依赖于 ActivatedRoute 参数的组件进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356084/

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