我正在对用于编辑对象的组件进行单元测试。该对象具有唯一的 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/