私は以下のクラスを持っている:PowerMockito:コンストラクタによって呼び出されたメソッドをモックする方法は?
public class Foo {
public Foo() {
initField1();
initField2();
initField3();
}
}
私は、彼らが実際に行うことは何もまたは他の何かをしない作るためinitField1()
とinitField3()
を(モックする)動作を変更する必要があります。私はinitField2()の実際のコードを実行することに興味があります。私は、次の試験書きたい
:
Foo foo = new Foo();
assertTrue(foo.myGet());
myGet()
はinitField2()
によって計算されたのFooの属性を返します。
initField()
の方法はもちろんプライベートです。
どうすればいいですか?
ご協力いただきありがとうございます。
これは従来のコードです。私は、例えば、引数を受け入れる新しいコンストラクタを書くことによって、テスト中のクラスを変更しないことを好みます。 'initField2()'は、テストしたいフィールドを設定する責任があるので、実行するだけです。私はコンストラクタのロジックの残りの部分をテストするのは面白くない。 –
Mockitoは相互作用を模擬するためのもので、PowerMockはレガシーコード用のクラスの部分的な内部動作を模擬しているため、この答えは間違っているだけです。 – eis