我正在使用Mockito进行单元测试。 Mockito中有许多匹配器,如anyString()
,anyBoolean()
。但是假设我有一个自定义enum
喜欢
Enum LoginType.java
//LoginType.java
public enum LoginType {
FACEBOOK,
EMAIL,
GOOGLE
}
在其中一个方法参数中,我需要传递LoginType
的实例。如何在未明确传递LoginType.FACEBOOK
或LoginType.GOOGLE
的情况下传递参数。像anyString()
这样的东西。这个方向的任何暗示都是有用的。
答案 0 :(得分:1)
对于any
行为,只需在Java 8上调用Matchers.any()
即可。当参数类型推断出现时。
您也可以选择在{Mockito 1.x中具有纯Matchers.any(LoginType.class)
行为的any()
,但会在Mockito 2.0及更高版本中提供类型检查。在任何一种情况下,传入类文字都将帮助Java获取推理所需的类型信息。
对于相关问题:
如果你有泛型类型,那么类文字也不够;您需要将其指定为显式方法参数:
Matchers.<YourContainer<YourType>>any();
...或提取到静态辅助方法,您需要这样做而不是常量或局部变量,因为Mockito matchers work via side effects:
public static LoginType anyLoginType() {
return Matchers.any();
}
最后,对于可能在这里实现自定义匹配逻辑的未来读者,请查找Matchers.argThat
或MockitoHamcrest.argThat
以将Hamcrest样式的Matcher对象调整为Mockito方法调用。