ActivatedRoute のパラメータに依存するコンポーネントを単体テストするにはどうすればよいでしょうか? 質問する

ActivatedRoute のパラメータに依存するコンポーネントを単体テストするにはどうすればよいでしょうか? 質問する

私は、オブジェクトの編集に使用されるコンポーネントの単体テストを行っています。オブジェクトには、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];

このコンポーネントで基本的な単体テストを実行したいのですが、パラメータを挿入する方法idやコンポーネントがわかりません。ニーズこのパラメータ。

ちなみに、このSessionサービスのモックはすでにあるので、心配はいりません。

ベストアンサー1

これを行う最も簡単な方法は、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})
  }
}

おすすめ記事