我像这样声明了这个方法
private Long doThings(MyEnum enum, Long otherParam);
和这个枚举
public enum MyEnum{
VAL_A,
VAL_B,
VAL_C
}
问:如何模拟doThings()
电话?我无法匹配任何MyEnum
.
以下方法不起作用:
Mockito.when(object.doThings(Matchers.any(), Matchers.anyLong()))
.thenReturn(123L);
Matchers.any(Class)
可以做到这一点:
Mockito.when(object.doThings(Matchers.any(MyEnum.class), Matchers.anyLong()))
.thenReturn(123L);
null
将被排除在外Matchers.any(Class)
.如果要包含null
则必须使用更通用的Matchers.any()
。
作为旁注:考虑使用Mockito
静态导入:
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
嘲笑变得短了很多:
when(object.doThings(any(MyEnum.class), anyLong())).thenReturn(123L);
除了上面的解决方案之外,请尝试以下操作...
when(object.doThings((MyEnum)anyObject(), anyLong()).thenReturn(123L);