将调用模拟到正在测试的方法中的另一个类的另一个方法

时间:2015-09-13 05:33:35

标签: java unit-testing java-ee mocking

我正在测试一个方法A,该方法调用另一个类B的另一个方法C,该方法返回Object类型D。我想使用B()模拟对mockito的调用。我怎么做?

代码:

function A()
{
   /*some code here*/
   C c = createC();
   D d= null;
   d = c.B(args);
   /*some code here*/
}

1 个答案:

答案 0 :(得分:0)

首先,不是创建C的实际实例,而是创建Test Double版本,如下所示:

// Let's import Mockito statically so that the code looks clearer
import static org.mockito.Mockito.*;

// mock creation
C mockedC = mock(C.class);

然后在mockedC上发生某些事情时定义期望,例如:

when(mockedC.B(args)).thenReturn(new D());

它说,只要有人在B(args)上致电mockedC,就会返回D的实例。

最后,您可以验证与预期互动的实际互动,例如:

verify(mockedC)...

有关详细信息,请参阅docs