使用Mockito间谍的用例是什么?
在我看来,每个间谍用例都可以通过使用callRealMethod的模拟来处理.
我能看到的一个区别是,如果您希望大多数方法调用都是真实的,那么使用模拟和间谍可以节省一些代码行.是这样还是我错过了大局?
使用Mockito间谍的用例是什么?
在我看来,每个间谍用例都可以通过使用callRealMethod的模拟来处理.
我能看到的一个区别是,如果您希望大多数方法调用都是真实的,那么使用模拟和间谍可以节省一些代码行.是这样还是我错过了大局?
真实部分模拟(从1.8.0开始)
最后,经过多次内部辩论;在邮件列表中,Mockito添加了部分模拟支持.之前我们认为部分模拟是代码气味.然而,我们发现了部分模拟的合法用例.
在1.8版之前,spy()不会生成真正的部分模拟,这会让一些用户感到困惑.阅读更多关于spying:here或用于spy(Object)方法的javadoc.
callRealMethod()
是在spy()
之后引入的,但spy()当然留在了那里,以确保向后兼容性.
否则,你是对的:间谍的所有方法都是真实的,除非存根.除非调用callRealMethod()
,否则mock的所有方法都是存根的.总的来说,我更喜欢使用callRealMethod()
,因为它不会迫使我使用doXxx().when()
而不是传统的when().thenXxx()