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 に答える