Mockito で任意の可変長引数にマッチさせる


anyVararg() マッチャーを使う。よく忘れる。


以下の可変長引数を取るメソッドがあった場合、

Account getAccount(Long id, AccountType...types);


以下のようにすると任意の可変長引数にマッチできる。

AccountService service = mock(AccountService.class);
when(service.getAccount(any(Long.class), Mockito.<AccountType>anyVararg()))
        .thenReturn(mock(Account.class));



verify の場合も同様。

verify(service).getAccount(any(Long.class), Mockito.<AccountType>anyVararg()));



ちなみに MockitoMatchers のサブクラスなので、

public class Mockito extends Matchers {
}

以下とやっても良い。

verify(service).getAccount(any(Long.class), Matchers.<AccountType>anyVararg()));