
Mockitoを利用したJUnitでの質問です。
オーバーロードしたメソッドで、可変引数と単一の引数を取るメソッドが混在する場合、
可変引数にマッチさせるにはどうしたらよいのでしょうか?
ネットで調べるとMockito.<Type>anyVararg()
を使用するように書かれていたので、
その通りに実装してみても単一の引数を取るメソッドにマッチしてしまいます。
(anyVarargは非推奨になっていたのでArgumentMatchers.any(Type.class)
やany**()など)
java
1public class MockTarget { 2 public String method(String arg) { 3 return "hoge"; 4 } 5 public String method(String... arg) { 6 return "hogehoge"; 7 } 8} 9 10@RunWith(MockitoJUnitRunner.class) 11public class Test { 12 @Mock 13 private MockTarget mockTarget; 14 15 @Test 16 public void test() { 17 Mockito.when(mockTarget.method(ArgumentMatchers.any(String.class))).thenReturn("fuga"); 18 // method(String arg)にマッチしてしまう 19 Mockito.when(mockTarget.method(ArgumentMatchers.anyString())).thenReturn("fuga"); 20 // method(String arg)にマッチしてしまう 21 Mockito.when(mockTarget.method(ArgumentMatchers.any(String[].class))).thenReturn("fuga"); 22 // String[]を渡しても"fuga"が返ってこない 23 } 24}
可変引数にマッチさせることはできないのでしょうか?
回答1件
あなたの回答
tips
プレビュー