随着我的Mockito验证可以做到以下几点:的Mockito:与泛型参数
verify(someService).process(any(Person.class));
但我怎么写这个,如果process
需要Collection<Person>
呢?无法弄清楚如何正确编写它。只是得到语法错误...
随着我的Mockito验证可以做到以下几点:的Mockito:与泛型参数
verify(someService).process(any(Person.class));
但我怎么写这个,如果process
需要Collection<Person>
呢?无法弄清楚如何正确编写它。只是得到语法错误...
尝试:
verify(someService).process(Matchers.<Collection<Person>>any());
事实上,自动的IntelliJ当我输入any()
...可惜你不能在这种情况下使用静态导入建议此修复程序。
由于类型擦除你不能表达。即使你可以用代码表达它,Mockito也没有机会在运行时检查它。你可以创建一个接口,如
interface PersonCollection extends Collection<Person> { /* nothing */ }
改为在整个代码中使用它。
编辑:我错了,Mockito有anyCollectionOf(..)这就是你想要的。
实际上,如果API接受它,它*可以用“类型文字”对象表示:'any(new TypeLiteral
@Rogerio:你说的对,现在看来Mockito的确支持这一点。有一段时间没有使用它... – Waldheinz 2011-05-30 11:56:15
尝试:
verify(someService).process(anyCollectionOf(Person.class));
由于版本1.8的Mockito介绍
public static <T> Collection<T> anyCollectionOf(Class<T> clazz);
对于其他需要它的人来说,除了anyCollectionOf(),还有一个anyListOf(),请参阅:http://stackoverflow.com/a/10512526/908677 – 2016-08-16 18:47:34
anyCollectionOf(类
,如果您使用的是自己的方法,你甚至可以使用静态导入:
private Collection<Person> anyPersonCollection() {
return any();
}
然后你可以使用
verify(someService).process(anyPersonCollection());
这似乎工作! – Svish 2011-05-30 11:55:31
感谢它的工作......但上帝看起来很可怕,必须有一个更好的方式来对... – 2013-01-10 19:01:25
竖起大拇指上唯一的解决方案,回答问题的陈述,而不是针对匹配容器的特殊情况。 – 2013-11-15 04:07:01