17

...可変数の引数( Javaの場合)を持つメソッドへのwhen呼び出し内で引数マッチャーを使用しようとしていますが、成功しません。私のコードは以下のとおりです。また、これを機能させるために使用したすべての行をリストします。

import static org.mockito.Mockito.*;

public class MethodTest {
    public String tripleDot(String... args) {
        String sum = "";
        for (String i : args) {
            sum += i;
        }
        System.out.println(sum);

        return sum;
    }

    public static void main(String[] args) {
        try{
            MethodTest mt = mock(MethodTest.class);
            when(mt.tripleDot((String[])anyObject())).thenReturn("Hello world!");
            System.out.println(mt.tripleDot(new String[]{"1","2"}));
        }
        catch (Exception e) {
            System.out.println(e.getClass().toString() + ": " + e.getMessage());
        }
    }
}

printステートメントが次の場合:

System.out.println(mt.tripleDot(new String[]{"1"}));

また

System.out.println(mt.tripleDot("1"));

「Helloworld」と表示されます。

ただし、printステートメントが次の場合:

System.out.println(mt.tripleDot(new String[]{"1","2"}));

また

System.out.println(mt.tripleDot("1","2"));

「null」を出力します。

anyObject()また、whenコールのバリエーションを試してみましたanyString()が、無駄になりました。可変数の引数を含むメソッド呼び出しに関して、Mockitoが引数マッチャーの使用を処理できるかどうかはわかりません。それも可能ですか?もしそうなら、私はこれを機能させるために何をすべきですか?

4

2 に答える 2

41

anyVararg()マッチャーを試してください。これは1.8.1で導入されました。

于 2012-04-18T17:06:53.607 に答える
6

試してみてくださいMockito.anyVararg()。動作するはずです。

于 2012-04-18T17:10:04.463 に答える