28

スタブしたいメソッドがありますが、パラメーターがたくさんあります。すべてのパラメーターのモックを回避しながら、メソッドをスタブ化するにはどうすればよいですか。

元:

//Method to stub
public void myMethod(Bar bar, Foo foo, FooBar fooBar, BarFoo barFoo, .....endless list of parameters..);
4

3 に答える 3

28

私はあなたが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だけであっても)。

于 2010-02-26T10:25:31.740 に答える
13

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)));
于 2013-09-03T14:13:34.077 に答える
3

実際のメソッドを呼び出し、指定した引数(別名「委任」)以外のすべての引数を入力するラッパークラスを作成します。

そして次の機会に、パラメーターを構成オブジェクトに移動するように要求するプロジェクトに対してバグを報告します。

于 2010-02-26T10:22:17.597 に答える