如何使用 Mockito 模拟 void 方法

2023-12-27

如何模拟具有 void 返回类型的方法?

我实现了一个观察者模式,但我无法用 Mockito 模拟它,因为我不知道如何做。

我试图在互联网上找到一个例子,但没有成功。

我的班级是这样的:

public class World {

    List<Listener> listeners;

    void addListener(Listener item) {
        listeners.add(item);
    }

    void doAction(Action goal,Object obj) {
        setState("i received");
        goal.doAction(obj);
        setState("i finished");
    }

    private string state;
    //setter getter state
} 

public class WorldTest implements Listener {

    @Test public void word{
    World  w= mock(World.class);
    w.addListener(this);
    ...
    ...

    }
}

interface Listener {
    void doAction();
}

系统不是用mock触发的。

我想显示上述系统状态。并据此作出断言。


看看 MockitoAPI docs http://javadoc.io/page/org.mockito/mockito-core/latest/org/mockito/Mockito.html#12。正如链接文档提到的(第 12 点),您可以使用任何doThrow(),doAnswer(),doNothing(),doReturn()从 Mockito 框架到模拟 void 方法的一系列方法。

例如,

Mockito.doThrow(new Exception()).when(instance).methodName();

或者如果你想将其与后续行为结合起来,

Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();

假设您正在考虑嘲笑设置者setState(String s)下面的 World 类中的代码使用doAnswer方法来模拟setState.

World mockWorld = mock(World.class); 
doAnswer(new Answer<Void>() {
    public Void answer(InvocationOnMock invocation) {
      Object[] args = invocation.getArguments();
      System.out.println("called with arguments: " + Arrays.toString(args));
      return null;
    }
}).when(mockWorld).setState(anyString());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Mockito 模拟 void 方法 的相关文章

随机推荐

  • 如何在 swift 中创建具有多个参数的选择器

    你好 这可能是个愚蠢的问题 但我想知道如何像 Objective C 中那样创建具有多个参数的选择器 例如 myButton addTarget self action selector buttonTapped data forContr
  • PHP 标头不会使用 AJAX 进行重定向

    对于一个项目 我们必须创建一个基本的登录系统 我正在尝试使用 REST 来管理我的整个页面 现在我相信我在这里遗漏或误解了一些关键概念 但我多年来一直试图弄清楚如何做到这一点 本练习不允许使用库 因此我无法使用 JQuery 所以这是我的问
  • 如何使用 python sympy 进行 z 变换?

    z变换在信号处理中非常重要 我可以在sympy教程中找到傅里叶 拉普拉斯 余弦变换等 但我不知道如何使用 sympy 进行 z 变换 你能告诉我该怎么做吗 SymPy 尚未将其实现为变换函数 但您可以直接表示求和 然而 经过一番使用后 它看
  • 从 C# 调用特定版本的 PowerShell

    我正在尝试使用Get VM从 Hyper V 主机上的 C 调用 Cmdlet 显然 相应的PowerShell模块Hyper V必须先导入 然而 导入失败 显然是因为该模块仅在 PowerShell 3 0 上受支持 至少我是这么认为的
  • jquery text().replace('','') 不起作用

    您好 我在添加文本字符串后尝试了几个小时再次删除它 我有一个处理手风琴的脚本 其中的文本有一些冗余 所以我想在打开或关闭手风琴行时添加和删除多余的文本 这是我的代码 var redundantText text text text a hr
  • 在Java中,我可以合并两个使用JspWriter和另一个PrintWriter的类似函数吗?

    我有以下类 正如您将看到的 它有一个相当冗余的 formatNameAndAddress 方法 package hu flux helper import java io PrintWriter import javax servlet j
  • 如何使用 .NET 读取 ASP.NET 内部服务器错误描述?

    看代码 using var client new WebClient try var bytesReceived client UploadData http localhost bytesToPost var response clien
  • Yii 2.0 如何在没有

  • 是否可以用没有函数的语言进行函数式编程?

    In 这条评论 https stackoverflow com questions 12272856 why cant i string print comment16458824 12272872 据说 Ruby 没有函数 只有方法 如果
  • 多线程堆管理

    在 C C 中 我可以在一个线程中分配内存并在另一个线程中删除它 然而 每当有人从堆请求内存时 堆分配器就需要遍历堆以找到大小合适的空闲区域 两个线程如何有效地访问同一个堆而不破坏堆 这是通过锁定堆来完成的吗 一般来说 您不需要担心内存分配
  • 了解何时使用有状态服务以及何时依赖 Azure Service Fabric 中的外部持久性

    我花了很多晚上的时间评估 Azure Service Fabric 作为我们当前 WebApps CloudServices 堆栈的替代品 并且有点不确定如何决定何时具有状态的服务 参与者应该是有状态参与者 以及何时应该是无状态参与者外部持
  • JUnit4 是否开始支持测试排序?是故意的吗?

    JUnit 实际上是 JUnit 4 的新手 遇到了执行测试的套件方法 RunWith Suite class Suite SuiteClasses CreateNewProfile class EditProfile class publ
  • 该命令返回一个非零代码:127

    我正在尝试构建下面的 Dockerfile 但它一直失败RUN ocp indent help saying ocp indent not found The command bin sh c ocp indent help returne
  • 在 iPhone 中裁剪星形图像

    我有一个矩形图像 但我想在我的 iPhone 应用程序中将此图像裁剪为星形 那么请问有人可以建议我如何做到这一点吗 请建议 谢谢 See the 对相关问题发表评论 https stackoverflow com questions 262
  • 如何使用派生列转换将字符串 (YYMMDD) 转换为日期时间?

    我有一个输入文本文件 其中包含几列 即TransactionID receiveddt description等等 recieveddt列具有以下格式的日期值120419 yymmdd 我想将 txt 输入文件加载到数据库中 但目标列rec
  • 有没有java api可以访问bugzilla? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个 独立的 java api 将 XML RPC 接口包装到 bugzilla 我不想为它编写
  • Magento - 在所有页面中创建固定块

    如何在不点击模块名称的情况下在包括主页在内的所有页面中可见的右列中创建一个块 谢谢 希望能很好地理解你的问题 1 创建一个模块 例如Mynamespace Mymodule 2 在模块中创建一个块 例如 Mynamespace Mymodu
  • Spock Test,只检查方法是否被调用,不执行

    在我们的 Spock 测试中 我们想要检查我们的软件中是否选择了正确的路径 但我们不想测试所调用方法的功能 这是在单独的测试中完成的 def Test setup service metaClass innerMethod gt retur
  • SSIS 任务导入不一致的列数?

    问题 我经常收到来自不同供应商的提要文件 尽管列名称一致 但当某些供应商发送源文件中包含或多或少列的文本文件时 就会出现问题 此外 这些文件的排列不一致 除了 Cozy Roc 提供的动态数据流任务之外 还有另一种方法可以导入这些文件 我不
  • 如何使用 Mockito 模拟 void 方法

    如何模拟具有 void 返回类型的方法 我实现了一个观察者模式 但我无法用 Mockito 模拟它 因为我不知道如何做 我试图在互联网上找到一个例子 但没有成功 我的班级是这样的 public class World List