Mockito:如何匹配任何枚举参数

2022-09-01 00:33:36

我像这样声明了这种方法

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);

答案 1

Matchers.any(Class)将做这个伎俩:

Mockito.when(object.doThings(Matchers.any(MyEnum.class), Matchers.anyLong()))
    .thenReturn(123L);

null将使用 排除。如果要包含,则必须使用更通用的 .Matchers.any(Class)nullMatchers.any()

作为旁注:考虑使用静态导入:Mockito

import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;

嘲笑变得更短:

when(object.doThings(any(MyEnum.class), anyLong())).thenReturn(123L);

答案 2

除了上述解决方案外,请尝试此操作...

when(object.doThings((MyEnum)anyObject(), anyLong()).thenReturn(123L);