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

Mockito@spy和@mock之间的差异(答案=answers.calls_real_methods)

阎彬炳
2023-03-14
@Mock(answer = Answers.CALLS_REAL_METHODS)
ArrayList<String> mock;

@Spy
ArrayList<String> spy;

共有1个答案

欧阳正卿
2023-03-14

前一个CALLS_REAL_METHODS样式创建一个未初始化的对象;未运行任何构造函数,也未设置任何字段。通常这种语法是不安全的,因为真正的实现将与未初始化的字段交互,这些字段可能构成无效或不可能的状态。

后一种@Spy样式允许您调用您选择的构造函数,或者如果字段未初始化,Mockito将尝试调用无参数构造函数。然后将字段复制到生成的Spy(扩展了speyed-on类型)中,从而允许更安全和更现实的交互。

必要的提醒:不要在toy示例之外实际模拟Java集合,并且在重写spies和CALLS_REAL_METHOD模拟时不要忘记使用doreturn语法,否则在调用时将调用中的real方法。

 类似资料:
  • 我目前正在使用Mockito在一个spring MVC应用程序中模拟我的服务层对象,我想在其中测试我的控制器方法。但是,由于我一直在阅读Mockito的细节,我发现方法等同于。所以,我的问题是,有两个方法做同样的事情有什么意义,或者和之间有什么微妙的区别? 如有任何帮助,我们将不胜感激。

  • 问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。

  • 我编写了一个简单的脚本,它接受任意数量的参数来演示< code>$@和< code>$*之间的区别: 在我做的 CLI 上 这就是打印出来的 因为它们是相同的,这是否意味着等于?还是我遗漏了一点?

  • 本文向大家介绍成本差异和进度差异之间的差异,包括了成本差异和进度差异之间的差异的使用技巧和注意事项,需要的朋友参考一下 对于任何应用程序或专门用于任何项目,最关注的因素之一是在开发前和开发后阶段的预算管理和时间管理。因此,要评估任何项目的这两个主要因素,有很多方法,其中成本差异和进度差异是两个重要且主要的方法。 顾名思义,“成本差异”基于项目开发中花费的成本,而“进度差异”则基于相同开发中花费的时

  • 问题内容: package main 该代码可以很好地工作。但是,如果按如下所示更改方法,则会导致死循环。区别在于将替换为。为什么? 问题答案: 因为程序包检查要打印的值是否具有方法(或换句话说:是否实现接口),如果是,则将调用它以获取值的表示形式。 软件包doc中对此进行了说明: […]如果操作数实现String()字符串方法,则将调用该方法将对象转换为字符串,然后根据动词的要求对其进行格式化(

  • 我正在通过做微控制器项目来自学C++。我当前的项目是使用一对或Adafruit羽毛分组无线电。无线电数据包的库函数需要一个C样式的字符串(我相信),我理解它是一个char的数组。 我已经设置了一个枚举来反映接收方的各种操作,并希望将该状态发送回发送方。所以我想把枚举变成char的数组。 在搜索将枚举转换为char数组的方法时,最简单的方法(对我来说)是将枚举变量传递给带有switch语句的函数,该