有了Mockito,我可以做以下事情:
verify(someService).process(any(Person.class));
但如果process
取代Collection<Person>
,我该怎么写呢?无法弄清楚如何正确地写它。刚收到语法错误......
答案 0 :(得分:107)
尝试:
verify(someService).process(Matchers.<Collection<Person>>any());
实际上,当我输入any()
时,IntelliJ会自动建议此修复...不幸的是,在这种情况下你不能使用静态导入。
答案 1 :(得分:25)
尝试:
verify(someService).process(anyCollectionOf(Person.class));
自版本1.8 Mockito介绍
public static <T> Collection<T> anyCollectionOf(Class<T> clazz);
答案 2 :(得分:1)
如果您使用自己的方法,甚至可以使用静态导入:
private Collection<Person> anyPersonCollection() {
return any();
}
然后你可以使用
verify(someService).process(anyPersonCollection());
答案 3 :(得分:-1)
由于类型擦除,您无法表达此信息。即使您可以在代码中表达它,Mockito也没有机会在运行时检查它。你可以创建一个像
这样的界面interface PersonCollection extends Collection<Person> { /* nothing */ }
而是在整个代码中使用它。
编辑:我错了,Mockito有anyCollectionOf(..)这就是你想要的。