スタブしたいメソッドがありますが、パラメーターがたくさんあります。すべてのパラメーターのモックを回避しながら、メソッドをスタブ化するにはどうすればよいですか。
元:
//Method to stub
public void myMethod(Bar bar, Foo foo, FooBar fooBar, BarFoo barFoo, .....endless list of parameters..);
スタブしたいメソッドがありますが、パラメーターがたくさんあります。すべてのパラメーターのモックを回避しながら、メソッドをスタブ化するにはどうすればよいですか。
元:
//Method to stub
public void myMethod(Bar bar, Foo foo, FooBar fooBar, BarFoo barFoo, .....endless list of parameters..);
私はあなたがMockitoを使ってどんな問題を抱えているのかよくわかりません。メソッドを含むインターフェースのモックを作成すると仮定すると、myMethod()
関心のあるメソッドのパラメーターのみを検証できます。たとえば、(インターフェースが呼び出されMyInterface
、JUnit 4を使用していると仮定):
@Test
public void test() {
MyInterface myInterface = mock(MyInterface.class);
FooBar expectedFooBar = new FooBar();
// other testing stuff
verify(myInterface).myMethod(any(), any(), eq(expectedFooBar), any(), ...);
}
これを機能させるには、Mockitoメソッドで静的インポートを実行する必要があります。マッチャーは、any()
検証時に渡された値を気にしません。
メソッド内のすべての引数に何かを渡すことは避けられません(たとえそれがNULLだけであっても)。
mockito.anyを使用する
myobj mymethodが文字列、文字列、バーなどを受け入れる場合
通話をスタブする
Mockito.when(myojb.myMethod(Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class)))
.thenReturn(amockedobject);
SteveDがすでに答えを出したことを確認する
Mockito.verify(myojb).myMethod(
Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class)));
実際のメソッドを呼び出し、指定した引数(別名「委任」)以外のすべての引数を入力するラッパークラスを作成します。
そして次の機会に、パラメーターを構成オブジェクトに移動するように要求するプロジェクトに対してバグを報告します。