45

我有这样声明的方法

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

2 回答 2

69

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);
于 2013-11-13T09:16:43.213 回答
1

除了上述解决方案,试试这个......

when(object.doThings((MyEnum)anyObject(), anyLong()).thenReturn(123L);
于 2013-11-13T09:27:51.827 回答