カスタムパイプを使用するコンポーネントを単体テストしようとしています。私は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);
も機能しませんでした。
まだ何か考えていますか? =) –
@SharikovVladislav、それは基本的に私がやった方法です。私のパイプはサービスを使い、パイプの動作を定義するためにサービスを偽装します。私の研究中の代替ソリューションは、テストで擬似パイプを作成し、同じ名前で登録することでした。どちらもうまくいくかもしれませんが、もう少し作業が必要です。 –
私はこれを試しました。「私の研究中の代替ソリューションは、テストで擬似パイプを作成し、同じ名前で登録することでした」。それは動作しません。 –