我使用的是Mockito 1.9.0。我想在JUnit测试中模拟类的单个方法的行为,所以我有
final MyClass myClassSpy = Mockito.spy(myInstance);
Mockito.when(myClassSpy.method1()).thenReturn(myResults);
问题是,在第二行中,myClassSpy.method1()实际上被调用了,导致了一个异常。我使用模拟的唯一原因是,以后无论何时调用myClassSpy.method1(),都不会调用真正的方法,并且将返回myResults对象。
MyClass是一个接口,myInstance是它的实现。
我需要做什么来纠正这种间谍行为?
有点晚了,但以上的解决方案并不适合我,所以分享我的0.02美元
Mokcito版本:1.10.19
MyClass.java
private int handleAction(List<String> argList, String action)
Test.java
MyClass spy = PowerMockito.spy(new MyClass());
以下没有为我工作(实际的方法正在被调用):
1.
doReturn(0).when(spy , "handleAction", ListUtils.EMPTY_LIST, new String());
2.
doReturn(0).when(spy , "handleAction", any(), anyString());
3.
doReturn(0).when(spy , "handleAction", null, null);
以下工作:
doReturn(0).when(spy , "handleAction", any(List.class), anyString());