使用Mockito,我可以执行以下操作:
verify(someService).process(any(Person.class));
但是如果process使用Collection<Person>,我该怎么写呢?不知道如何正确地写它。只是得到语法错误...
process
Collection<Person>
eivgtgni1#
试试看:
verify(someService).process(ArgumentMatchers.<Collection<Person>>any());
实际上,IntelliJ在我键入any()时自动建议了这个修复...不幸的是,在这种情况下不能使用静态导入。
any()
3pmvbmvn2#
verify(someService).process(anyCollectionOf(Person.class));
自从版本1.8 Mockito引入
public static <T> Collection<T> anyCollectionOf(Class<T> clazz);
gpnt7bae3#
如果您使用一个所有者方法,您甚至可以使用静态导入:
private Collection<Person> anyPersonCollection() { return any(); }
然后您可以使用
verify(someService).process(anyPersonCollection());
shstlldc4#
作为可接受答案的替代方案,您可以尝试:
verify(someService).process(Mockito.<SomeGenericClass<Person>>any());
在这里我使用了org.mockito.Mockito而不是Matchers。
org.mockito.Mockito
Matchers
3npbholx5#
由于类型删除,您无法表达它。即使您可以在代码中表达它,Mockito也没有机会在运行时检查它。
interface PersonCollection extends Collection<Person> { /* nothing */ }
并在整个代码中使用它。编辑:我错了,Mockito有AnyCollectionOf(..)这是你想要的。
5条答案
按热度按时间eivgtgni1#
试试看:
实际上,IntelliJ在我键入
any()
时自动建议了这个修复...不幸的是,在这种情况下不能使用静态导入。3pmvbmvn2#
试试看:
自从版本1.8 Mockito引入
gpnt7bae3#
如果您使用一个所有者方法,您甚至可以使用静态导入:
然后您可以使用
shstlldc4#
作为可接受答案的替代方案,您可以尝试:
在这里我使用了
org.mockito.Mockito
而不是Matchers
。3npbholx5#
由于类型删除,您无法表达它。即使您可以在代码中表达它,Mockito也没有机会在运行时检查它。
并在整个代码中使用它。
编辑:我错了,Mockito有AnyCollectionOf(..)这是你想要的。