【发布时间】:2017-12-21 10:51:21
【问题描述】:
假设我有一个将List<List<MyObject>> 作为参数的方法:
public void myFunction(List<List<MyObject>> listOfList) {}
我知道我可以使用 anyList() 作为匹配器,例如
verify(myClass).myFunction(anyList());
但是,我收到了未经检查的分配警告。我不能使用这些匹配器中的任何一个,因为它们会产生编译错误:
// Fails - Expects just a single-layered List<MyObject>
verify(myClass).myFunction(anyListOf(MyObject.class));
// Fails - "no instance(s) of type variable(s) T exist so that List<T> conforms to Class<T>"
verify(myClass).myFunction(anyListOf(anyListOf(MyObject.class)));
那么我如何为List<List<T>> 类型的参数创建一个类型安全的匹配器?
【问题讨论】:
-
不,据我所知不可能。这是一个普遍的问题。 Mockito 为许多泛型类型提供了预定义的匹配器。例如
anyList()、anyMap()或anyString()。但不适用于List<List>。因此您无法获得类型安全的匹配器
标签: android unit-testing testing mockito