当前位置: 首页 > 知识库问答 >
问题:

doReturn when和when thennreturn with mocked vs spied object的行为

壤驷凯
2023-03-14

当使用间谍对象作为测试对象时,如果我们不想在我们正在测试的方法中调用嵌套方法,这些方法中的哪一个(doReport-time或whing-thenBack)可以用来模拟这些嵌套方法?有没有办法避免在我们将要测试的方法中调用真正的方法?

共有1个答案

夏侯朝斑
2023-03-14

事实上,对于这种特定情况,您是否使用doReport-time或whing-thenBack方法并不重要,因为考虑到@Spy,您将始终调用真正的方法。

您可以通过模拟来避免输入其他方法,但如果您只使用Mockito,这将是一个问题(它没有这种方法,但PowerMock有)。我尤其不同意这种方法,因为我们在测试中太过干涉,私有流是整个流的一部分,但您可以这样做:

SomeService mock = spy(SomeService.class);

doReturn(1).when(mock, "getNumber", ArgumentMatchers.anyInt());

有关更多详细信息,您可以验证PowerMock的官方文档。另外,很高兴了解一些基本的单元测试概念(存根、模拟等)。

 类似资料:
  • 我已经简化了下面的代码在更新的表视图。 由于某些原因,我没有像人们所期望的那样使用JavaFx的属性,也许这种行为与此有关。来自JTable和observer模式,我想尝试如何在javafx中实现这一点。然而,我的表格数据都很好,但当我试图改变背景颜色时,更多的行出现在表格范围之外。我已经检查了可观察列表的大小,结果与预期一致。 我无法真正看到或理解datas.set是如何产生这种行为的,这是我在

  • 因此,我一直在尝试并行运行流,并基于API文档和我阅读的其他支持材料监视它们的行为。 我创建了两个并行流并运行,其中一个流是有序的,另一个是无序的。然后,我使用打印结果(以确保在distinct运行后看到流的最终遇到顺序),并且可以清楚地看到无序版本并不保持原始顺序,但具有较大的数据集,将明显提高并行性能。 有API注释建议,当流无序时,和操作也应该更有效地并行运行,因为您不必检索第一个元素,而可

  • 问题内容: 我有这个非常简单的课程: 在类路径中指定的此上下文文件不存在。我几乎可以输入任何想要的名称,并且代码不会中断。我的意思是测试运行正常,就好像该文件确实存在。 如果我从: classpath 到 classpath* 做了一个小的更改,它会发出喙,表示该文件不存在,这也是我在第一种情况下的预期行为。 春季版本3.2.3。 有人可以解释这种奇怪的行为吗? 编辑 建议的日志内容: 我什至尝试

  • 问题内容: 考虑我创建一个LinkedHashMap,如下所示: 当我打电话给我时,有没有给我订购一套?如果我打电话给我,这些也是吗? 编辑 很抱歉,是有序的,没有排序。 问题答案: 首先是 有序 但没有 排序 。被 排序 (并因此 有序 以及)。 这就是说,你不能指望的输出,并进行排序。实际上,JavaDoc说 与订单无关 (事实证明,顺序 是 :由JavaDoc的保证是保证键和值从一个Link

  • 问题内容: 我在mySQL中有一个带有以下各列的表: TRANS_TYPE可以是“ DRINV”(销售)或“ DRCDT”(信用)。 我想获取每个客户的总销售额,因此到目前为止,我的查询是: 问题是这是销售 和 积分的总和,而不是销售减去积分。我希望结果是 是否可以在SQL查询中执行此操作? 问题答案:

  • 问题内容: 我从Class.getResource()和ClassLoader.getResource()之间有什么区别? 从自己的代码 等同于 无法读取jar文件中的图像的帖子显示了使用 在可执行jar文件中返回null,而 返回正确的URL。 删除前导斜杠后的代表,我希望这些调用是相同的,但显然在这种情况下它们是不同的。即使将特殊的类加载器附加到特定的类上,对于每次调用,它也应该是相同的,再次

  • 问题内容: 我有一个MySQL查询,该查询返回的是一行1和0。用于进度条指示器。我现在已经在代码中对其求和了,但是我尝试对查询中的值求和,并且意识到我不能使用SUM(),因为它们有很多列,但只有一行。 有没有一种方法可以自动在查询中求和?就像这样: 编辑:我忘了提,等等不是简单的字段值,而是每个值,而是一个表达式,例如,所以看起来我必须做一个嵌套查询: 正确? 问题答案: 如果可以有空值,则需要按

  • 问题内容: 任何人都对使用Resque时GitHub如何处理Redis服务器的潜在故障或暂时不可用有任何见解? 还有其他一些人似乎使用Zookeeper将半复杂的解决方案组合在一起作为redis集群的保留(请参阅https://github.com/ryanlecompte/redis_failover和Resque故障转移redis解决方案。其他人似乎具有“穷人故障切换”功能,在连接问题一见钟情