使用Mockito间谍的用例是什么?
在我看来,每个间谍用例都可以使用callRealMethod进行模拟处理。
我可以看到的一个区别是,如果您希望大多数方法调用都是真实的,则可以节省一些代码行以使用模拟与间谍。是这样还是我错过了更大的前景?
答案在文档中:
真正的部分模拟(自1.8.0开始)
最后,在邮件列表上进行了许多内部辩论和讨论之后,Mockito添加了部分模拟支持。以前我们认为部分模拟是代码的味道。但是,我们发现了部分模拟的合法用例。
在1.8版之前,spy()并未生成真正的部分模拟,并且对某些用户造成了混乱。阅读更多有关间谍的信息:此处或在javadoc中获取spy(Object)方法。
callRealMethod()
是在之后引入的spy()
,但为了确保向后兼容,当然保留了spy()。
否则,您是对的:间谍的所有方法都是真实的,除非被阻止。除非callRealMethod()
调用,否则模拟的所有方法都是存根的。一般而言,我宁愿使用callRealMethod()
,因为它不会强迫我使用doXxx().when()
成语而不是传统when().thenXxx()
我正在为类编写一个单元测试,该类如下所示: 我想编写一个简单的单元测试,它将方法存根(这样它就不会实际触发并命中数据库),但它允许我验证调用是否最终执行。Mockito似乎是这份工作的合适工具。 这似乎是一个很好的游戏计划(至少对我来说)。但当我实际编写代码时,在测试方法的第2行(行)出现以下编译器错误: 类型Mockito中的(T)不适用于参数(void)时的方法 我看到Mockito无法模拟返
包括StackTrace。我尝试用这个when(requestBodySpec.body(any())替换body mock。然后返回(requestHeadersSpec);也但是没有用。我认为问题在于模仿单声道。只是反对。不确定可能是什么问题。如果有不同的方法来模拟单声道。请分开反对并通过,请让我知道。
我想在我的发票类中存根methot generateFerenceNumber():
当我试图模仿javax.ws.rs.core 时,我得到一条错误消息: 无法创建JAX-RS运行时委托 为什么会发生这种情况? 但是,当我试图嘲笑HttpServlet响应时,这是没有问题的!
我也是Mockito和PowerMockito的新手。我发现我无法使用纯Mockito测试静态方法,因此我需要使用PowerMockito(对吗?)。 我有一个非常简单的类,名为Validate,使用这个非常简单的方法 因此,我需要验证: 1) 当我在null message参数上调用该静态方法时,将调用IllegalArgumentException。2)当我在null object参数上调用该
null