:route.snapshot.paramsをモックする方法は?私のようなもの持っている私のアンギュラ4コンポーネントで
constructor(private route: ActivatedRoute) {
}
ngOnInit() {
this.myId = this.route.snapshot.params['myId'];
}
をそして、私はのように見えると仮定モックを作成しようとしているが、以下:
class MockActivatedRoute extends ActivatedRoute {
public params = Observable.of({ myId: 123 });
}
私のテストはして失敗します。
TypeError: Cannot read property 'params' of undefined.
私はそれを模擬すると思いますか?私はActivatedRoute
の正しい使い方を誤解していて、私のコンポーネントでrouter.subscribe
をよく使うべきですか?私は人々がスナップショット自体を嘲笑した複雑な例をいくつか見ていましたが、私にとってはそれは複雑すぎます。私は単に何かにテスト対象のメソッドを変更する場合は、次のように
describe('ngOnInit',() => {
it('should set up initial state properly',
() => {
const component = TestBed.createComponent(MyComponent).componentInstance;
component.ngOnInit();
expect(component.myId).toEqual('123');
});
});
- テストが動作します:
:)
ありがとう:ルート= [{パス: '情報'、データ:{たcatalogId: '123'} 、component:StatusComponent}、] 'そして、' RouterTestingModule.withRoutes(fakeRoutes) 'を返します。この構文がサポートされているかどうかは不明です。 – and85
これをユニットテストに使用しようとしていますか?もしあなたがそのコードを投稿することができます – LLai
あなたのモックはスナップショット 'this.route.snapshot.params'の代わりに観測可能な' this.route.params'(観測値を返します)をモックしているので、未定義のパラメータを取得していますparamsのオブジェクト) – LLai