2011-02-02 15 views
0

私はオブジェクトのパブリックで非静的メソッドをモックする必要があります。非静的メソッドJavaモックを置き換えます

問題は、このオブジェクトがコード内で直接作成されるため、モックオブジェクトを作成できないということです。

私はPowerMockito.spy()を使用してクラスをスパイしてPowerMockito.when(...)試してみましたが、それはうまくいきませんでした(多分そのPowerMockito.whenのみ静的およびプライベートメソッドのために働くため)

たとえば、これをテストする必要があるとします。

... myClass anObject = new myClass(); anObject.aMethod();
...

どうすればanObject.aMethod()を呼び出すことができますか?

私は

答えて

1

使用依存性の注入..私はMyClassのをスパイする必要があるが、それは動作しませんでしたね。

最も単純なケースでは、オブジェクトを作成するメソッドにファクトリオブジェクトを渡し、そのファクトリをスパイします。

これを行う他の方法は、オブジェクトのコンストラクタにファクトリを渡すことです。

1

依存関係注入を使用するようにコードをリファクタリングするのが最善でしょう。

しかし、PowerMockitoで実際にコンストラクタをスタブすることができます。 javadoc for whenNewを参照してください。

私はPowerMockitoを使用していないので、保証することはできませんが、これはコンストラクタ呼び出しがモックオブジェクトを返すようにする必要があるようです。

関連する問題