2012-04-18 25 views
14

引数の可変数(Javaの場合は...)を持つメソッドの呼び出し時に引数マッチャーを使用しようとしています。私のコードは以下の通りです。私はこの作業をするために使ったすべての行もリストします。引数の数が可変のメソッド呼び出しの場合の引数マッチャーの使用

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")); 

それが印刷されます "こんにちは、世界を。"

しかし、print文がある場合:

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

または

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

それは "ヌル" を印刷します。

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

答えて

30

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

+0

今はとても恥ずかしく感じます。これを指摘してくれてありがとう。 – Andrew

+2

@Andrew、心配しないでください。私たちすべてに起こります。それが私たちが学ぶ方法です。 :D – user1329572

+3

正しい構文を見つけるのにもう少しの時間が必要でした: 'Matchers。 anyVararg() ' – jan

4

お試しMockito.anyVararg()それは動作するはずです。

関連する問題