2017-06-14 1 views
1

カスタムパイプを使用するコンポーネントを単体テストしようとしています。私はtransformメソッドの偽の実装を私のテストに提供したいと思います。コンポーネントのテスト時にパイプをオーバーライドします。

私は、コンポーネント、モジュール、パイプなどをoverrideにすることができますが、コンポーネントの動作(実装)をどのようにオーバーライドできるかはわかりません。

私は私のパイプの交換などのカスタムクラスを提供しようとしていると、それは動作しませんでした:

TestBed 
    .configureTestingModule({declarations: [MyPipe]}) 
    .overridePipe(MDatePipe, {set: MyFakePipe}) 

私はSO How to mock Pipe when testing Componentに同様の質問を発見したが、提案された解決策は完全に新しいパイプを作成することでしたし、私の意見ではあまりにも多すぎるテストモジュールのdeclarationsにそれを提供してください。

overridePipeは私がtransform実装をオーバーライドすることはできません場合には、作成したMyPipeクラスのインスタンスとspyOnにそれを得ることは可能でしょうか?

var pipe = TestBed.get(MyPipe); 

も機能しませんでした。

答えて

0

パイプの動作をオーバーライドする方法が見つからないため、実際のパイプに偽のサービスを提供してしまい、その動作を模擬することができませんでした。

代替ソリューションは、質問How to mock Pipe when testing Componentの回答として示唆されているように、テストのための偽パイプの実装を作成することです。

+0

まだ何か考えていますか? =) –

+0

@SharikovVladislav、それは基本的に私がやった方法です。私のパイプはサービスを使い、パイプの動作を定義するためにサービスを偽装します。私の研究中の代替ソリューションは、テストで擬似パイプを作成し、同じ名前で登録することでした。どちらもうまくいくかもしれませんが、もう少し作業が必要です。 –

+0

私はこれを試しました。「私の研究中の代替ソリューションは、テストで擬似パイプを作成し、同じ名前で登録することでした」。それは動作しません。 –

関連する問題