Mockito:使用通用参数进行validation
用Mockito我可以做到以下几点:
verify(someService).process(any(Person.class));
但是如果process
需要一个Collection<Person>
我怎么写呢? 无法弄清楚如何正确写入。 只是得到语法错误…
尝试:
verify(someService).process(Matchers.<Collection<Person>>any());
实际上,当我inputany()
时,IntelliJ会自动提示此修复…不幸的是,在这种情况下,您不能使用静态导入。
试试:
verify(someService).process(anyCollectionOf(Person.class));
从Mockito 1.8版本开始
public static <T> Collection<T> anyCollectionOf(Class<T> clazz);
如果你使用自己的方法,你甚至可以使用静态导入:
private Collection<Person> anyPersonCollection() { return any(); }
那么你可以使用
verify(someService).process(anyPersonCollection());
由于types擦除你不能expression这个。 即使你可以用代码来expression它,Mockito也没有机会在运行时检查它。 你可以创build一个类似的界面
interface PersonCollection extends Collection<Person> { /* nothing */ }
而是在整个代码中使用它。
编辑:我错了,Mockito有anyCollectionOf(..)这是你想要的。