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



我像这样声明了这个方法

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

相关内容

  • 没有找到相关文章

最新更新