Mockito - doReturn() 和when() 之间的区别

2023-12-24

我目前正在使用 Mockito 在 Spring MVC 应用程序中模拟我的服务层对象,我想在其中测试我的控制器方法。然而,当我阅读 Mockito 的细节时,我发现这些方法doReturn(...).when(...)相当于when(...).thenReturn(...)。所以,我的问题是有两种方法做同样的事情有什么意义,或者两者之间的细微差别是什么doReturn(...).when(...) and when(...).thenReturn(...)?

任何帮助,将不胜感激。


存根的两种语法大致相同。但是,您可以always use doReturn/when用于存根;但有些情况下你can't use when/thenReturn。存根无效方法就是其中之一。其他包括与 Mockito 间谍一起使用,以及多次对同一方法进行存根。

一件事是when/thenReturn给你,那个doReturn/when不是,是在编译时对您返回的值进行类型检查。然而,我相信这几乎没有任何价值——如果你的类型错误,你一运行测试就会发现。

我强烈建议只使用doReturn/when。当一种语法可以用时,学习两种语法是没有意义的。

您不妨参考我的回答形成 Mockito“语法” https://stackoverflow.com/questions/11462697/forming-mockito-grammars- 对一个非常密切相关的问题的更详细的回答。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mockito - doReturn() 和when() 之间的区别 的相关文章

  • 使用 JPA Criteria API 进行分页的总行数

    我正在系统中为实体实现 高级搜索 功能 以便用户可以使用该实体的属性上的多个条件 eq ne gt lt 等 来搜索该实体 我正在使用 JPA 的 Criteria API 动态生成 Criteria 查询 然后使用setFirstResu
  • 是什么决定了从 lambda 创建哪个函数式接口?

    请考虑这个例子 import java util function Consumer public class Example public static void main String args Example example new
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • 比较两个文本文件的最快方法是什么,不将移动的行视为不同

    我有两个文件非常大 每个文件有 50000 行 我需要比较这两个文件并识别更改 然而 问题是如果一条线出现在不同的位置 它不应该显示为不同的 例如 考虑这个文件A txt xxxxx yyyyy zzzzz 文件B txt zzzzz xx
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • Calendar.getInstance(TimeZone.getTimeZone("UTC")) 不返回 UTC 时间

    我对得到的结果真的很困惑Calendar getInstance TimeZone getTimeZone UTC 方法调用 它返回 IST 时间 这是我使用的代码 Calendar cal Two Calendar getInstance
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • java.lang.NumberFormatException: Invalid int: "3546504756",这个错误是什么意思?

    我正在创建一个 Android 应用程序 并且正在从文本文件中读取一些坐标 我在用着Integer parseInt xCoordinateStringFromFile 将 X 坐标转换为整数 Y 坐标的转换方法相同 当我运行该应用程序时
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • 单元测试时 Android Studio 2.0 中测试状态终止且没有任何失败消息

    Issue 我昨天在 Ubuntu 上从 1 5 升级到了 Android Studio 2 0 当我在 Android Studio 2 0 中进行单元测试时 即使所有测试都已通过 它也会显示 终止测试 状态 有时它只显示部分测试通过 我
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • ThreadLocal - 用作带有 spring-boot 的 REST API 的上下文信息

    我有一些spring boot应用程序 它公开了 REST API 提到的 REST API 是由spring security 一切都很好 但是现在我需要设置上下文 用于服务请求 设置上下文是指根据用户上下文选择数据源 关键是Routin
  • Unity Shader - 如何有效地重新着色特定坐标?

    首先 请允许我解释一下我所得到的内容 然后我将讨论接下来我想要弄清楚的内容 我有什么 我有一个带纹理的自定义网格 其一些边缘与 Unity 中的整数世界坐标完全对齐 在网格中 我添加了自己的粗略但有效的自定义表面着色器 如下所示 Shade
  • Swift Closure 中的可选链接,返回类型必须为 Void

    我正在创建一个脚本的双向链接列表 MSScripts 应该有自己的run 实现 然后他们调用下一个脚本 rscript 当他们准备好时 我想创建的脚本之一只是一个延迟 它看起来像这样 class DelayScript MSScript v
  • Django - ManyToManyRelation 中的级联删除

    使用以下相关模型 一篇博客文章可以有多个修订版 class BlogEntryRevision models Model revisionNumber models IntegerField title models CharField m
  • lua 中的准引用/引用?

    在 Lisp 中 我可以 a b c d e f g 意思是 look up b c d e f g look up a apply value of a to above 那么 我还可以 a b c d e f g 这相当于 list a
  • $_ 与命名输入或循环参数有何不同?

    由于我经常使用 我想更好地理解它的用法 据我理解和使用 是隐式值的全局变量 由于 似乎无论如何都已设置 是否有理由在 上使用命名循环变量besides可读性 在什么情况下 是全局变量很重要 所以如果我使用 for array print o
  • 后记 - 文档大小

    附言中如何设置页面大小 如何将文档旋转到宽度 Example 1 newpath 100 200 moveto 200 250 lineto 100 300 lineto 2 setlinewidth stroke showpage 谢谢
  • 如何在 Jenkins 中将安全类型从 SSL 更改为 TLS?

    我正在尝试设置 smtp 电子邮件通知 我可以看到 Gmail 部分工作正常 我想为我的 Office 365 配置它 smtp服务器 smtp office365 com 我们没有配置 SSL 相反 我们使用 TLS 如何在 Jenkin
  • 如何通过删除 NA 值的选项来融合 Pandas 中的数据框

    我有一个像这样的 Pandas 数据框 df pd DataFrame VAR1 V1 V2 V2 V3 V4 V4 V5 VAR2 C1 C1 C1 C2 C2 C2 C3 VAR3 S1 S2 S3 S4 VAR4 S3 S4 S5 S
  • 更改应用程序默认描述语言

    我正在将我的应用程序的新版本提交到应用程序商店 有没有办法更改 iTunesConnect 中的默认应用程序语言 假设我有法语作为默认描述语言 我需要更改default到英语 我怎么做 您的应用程序必须处于 准备销售 状态 然后 转到您的应
  • 是否可以根据变量标签选择列?

    对于非常广泛的数据集 是否可以使用变量标签来选择列 library expss data mtcars mtcars apply labels mtcars mpg Miles US gallon cyl Number of cylinde
  • 在Python中使用Windows换行符在Linux上高效读取csv文件

    下面是在windows下逐行读取csv文件的工作 f open filename r for line in f 但是当将 csv 文件复制到 Linux 服务器时 它失败了 应该提到的是 由于 csv 文件很大 性能是一个问题 因此 我担
  • C++ 嵌套迭代器

    可以使用像下面这样的嵌套迭代器吗 for vector
  • Google Play alpha/beta 测试的最大测试人员数量

    我的应用程序还没有发布 我可以通过 Google Play 测试我的应用程序的 Alpha Beta 测试人员的最大数量是多少 对于 iOS 每个构建有 1000 名外部测试人员 Google Play 的限制是多少 没有有效限制 尽管有G
  • Unix中会话和进程组的用途和意义?

    Unix 进程有一个会话ID并且是一部分进程组 可以使用以下功能更改 查询setsid getpgrp 然而 一个概念进程组 and session总是让我困惑 有人能解释一下不同的会话和进程组提供什么意义吗 为什么 何时要创建一个新会话或
  • 无法从 Artifactory 中托管的 NuGet 流中找到包

    因此 我们设置了一个 Artifactory 来为我们的团队共享不同的资源 其中之一当然是 N uGet 包 现在 我对 Artifactory 非常陌生 我的一位队友在 Artifactory 上上传了一个 NuGet 包 并给出了如下所
  • CNContact 最后修改日期和联系人更改

    问题 如何在 CNContact 新的苹果联系人框架 中获取最后修改日期 最后修改日期不存在于keysToFetch 列表中 我想获取并更新自上次获取以来已修改的联系人 我怎样才能做到这一点 根据苹果员工的回复 目前还没有相关的 api h
  • ruby - 获取按日期过滤的记录

    我有一个 作业 模块 以及数据库中的相应表 该模块有一个名为cheduled run 日期时间 的字段和一个名为user id的字段 我怎样才能获得属于某个用户并安排在今天的所有工作 我怎样才能获得属于某个用户并安排在上周的所有工作 要获取
  • 一个文件中的多个 PHP 查询用于 AJAX 调用

    对于 AJAX 我完全是个菜鸟 只是想知道是否 创建 ajax 调用时 ajax type POST url http link to php file php data link variable 我是否必须创建多个 PHP 文件 每个文
  • Mockito - doReturn() 和when() 之间的区别

    我目前正在使用 Mockito 在 Spring MVC 应用程序中模拟我的服务层对象 我想在其中测试我的控制器方法 然而 当我阅读 Mockito 的细节时 我发现这些方法doReturn when 相当于when thenReturn