Mockito:使用通用参数进行验证

| 使用Mockito,我可以执行以下操作:
verify(someService).process(any(Person.class));
但是如果
process
Collection<Person>
怎么写呢?无法弄清楚如何正确编写。刚收到语法错误...     
已邀请:
        尝试:
verify(someService).process(Matchers.<Collection<Person>>any());
实际上,当我键入
any()
时,IntelliJ会自动建议此修复程序。不幸的是,在这种情况下,您不能使用静态导入。     
        尝试:
verify(someService).process(anyCollectionOf(Person.class));
从1.8版Mockito开始引入
public static <T> Collection<T> anyCollectionOf(Class<T> clazz);
    
        如果使用自己的方法,甚至可以使用静态导入:
private Collection<Person> anyPersonCollection() {
    return any();
}
那你可以用
verify(someService).process(anyPersonCollection());
    
        由于类型擦除,您无法表达这一点。即使您可以用代码表达它,Mockito也没有机会在运行时对其进行检查。您可以创建一个类似的界面
interface PersonCollection extends Collection<Person> { /* nothing */ }
而是在整个代码中使用它。 编辑:我错了,Mockito有anyCollectionOf(..)这就是你想要的。     

要回复问题请先登录注册