EasyMock有一个名为createMockBuilder
的函数,有人可以使用该函数指定部分模拟的类。
是否有可能对Mockito做同样的事情?
例如,在EasyMock中,有些人可以执行以下操作:
classA mockedA = EasyMock.
createMockBuilder(A.class).
withConstructor(B.class,C.class).
withArgs(b,null).
addMockedMethod("print").
createMock();
是否有可能对Mockito做同样的事情?
答案 0 :(得分:1)
Mockito与EasyMock有点不同。例如,在EasyMock中,您可以决定要模拟哪些成员函数:
EasyMock.createMockBuilder(A.class).addMockedMethod("foo");
在Mockito中,默认情况下会模拟所有成员函数,您可以指定何时调用基础函数:
A a = Mockito.mock(A.class);
Mockito.when(a.foo()).thenCallRealMethod();
如果您想要使用Mockito仅模拟几个成员函数,我可以考虑两种方法:上面的示例和间谍。
A a = Mockito.spy(A.class);
Mockito.when(a.foo()).thenReturn("ret");
a.bar(); // Calls the real A.bar() function.
使用间谍,默认情况下不会模拟成员函数,但可以有选择地模拟。请在此处查看更多信息:http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#spy