使用 Mockito 模拟局部范围对象的方法

2023-11-23

我需要一些帮助:

Example:

void method1{
    MyObject obj1=new MyObject();
    obj1.method1();
}

我想嘲笑obj1.method1()在我的测试中,但为了透明,所以我不想制作和更改代码。 Mockito 有什么办法可以做到这一点吗?


@edutesoy 的答案指向了文档PowerMockito并提到构造函数模拟作为提示,但没有提及如何将其应用于问题中的当前问题。

这是一个基于此的解决方案。从问题中获取代码:

public class MyClass {
    void method1 {
        MyObject obj1 = new MyObject();
        obj1.method1();
    }
}

以下测试将创建一个模拟MyObject通过准备实例化它的类来实例化它(在这个例子中我称之为MyClass) with PowerMock并让PowerMockito存根构造函数MyObject类,然后让你存根MyObject实例method1() call:

@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class)
public class MyClassTest {
    @Test
    public void testMethod1() {      
        MyObject myObjectMock = mock(MyObject.class);
        when(myObjectMock.method1()).thenReturn(<whatever you want to return>);   
        PowerMockito.whenNew(MyObject.class).withNoArguments().thenReturn(myObjectMock);
        
        MyClass objectTested = new MyClass();
        objectTested.method1();
        
        ... // your assertions or verification here 
    }
}

这样你的内部method1()调用将返回您想要的内容。

如果您喜欢单行代码,您可以通过创建模拟和内联存根来缩短代码:

MyObject myObjectMock = when(mock(MyObject.class).method1()).thenReturn(<whatever you want>).getMock();   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Mockito 模拟局部范围对象的方法 的相关文章

  • ES6解构对象赋值函数参数默认值

    您好 我正在查看在传递函数参数时使用对象解构的示例对象解构演示 https developer mozilla org en US docs Web JavaScript Reference Operators Destructuring
  • javascript:检查对象是否具有特定元素或属性的最佳方法?

    假设我有这个 var person name John Doe email email protected cdn cgi l email protection 该对象只有两个元素 称为name and email 有些人还有一个要素age
  • Java中如何将Object[]转换为String[]?

    我有一个关于 Java 的问题 我有一个Object Java默认的 不是用户定义的 我想将它转换为String 谁能帮我 谢谢 这是转换 for int i 0 i lt objectArr length i try strArr i o
  • 如何在 C++ 中使用 for 循环创建多个对象?

    我正在尝试使用 for 循环创建多个对象 因为最终我希望该程序根据我的输入创建不同数量的类 我尝试使用之前的答案来写这个question https stackoverflow com questions 5226352 declare a
  • 用Red语言制作GUI对象

    我有一个小面板的以下简单代码 view t text label f field button Click here t text f text 但我必须制作其中两个并将它们放在一个窗户上 我想创建单个对象类并从中创建 2 个对象 我看到可
  • 在 Groovy 中分配对象属性的简写方法?

    我使用此约定创建 Groovy 对象 Item item1 new Item name foo weight 150 是否有操作属性对象的速记约定 像这样的东西 item1 name hello weight 175 this does n
  • 当我尝试在 PHP 中访问类变量时,类变量为 null

    好吧 这是我的主要代码 require checkpassword php require mysqllogininfo php Validate password if validatePassword GET password retu
  • 如何在 PHP 中使用 Amazon 的 API 来搜索书籍? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一款用于图书共享 评论和推荐的 Facebook 应用程序 我搜索了网络 使用我能想到的每个
  • PowerMockito 模拟单个静态方法并返回对象

    我想从包含 2 个静态方法 m1 和 m2 的类中模拟静态方法 m1 我希望方法 m1 返回一个对象 我尝试了以下方法 1 PowerMockito mockStatic Static class new Answer
  • Rspec——需要存根在另一个文件中调用的 File.open

    在我的测试中 我正在初始化一个名为的新类Package带有一些参数 在此类的初始化中 我打开一个在远程机器上可用的文件 但不是本地常见的文件 我想知道如何在测试中对该方法进行存根 我正在使用 rspec 和 mocha 我尝试过类似的东西
  • Rhino.Mocks 和 ref 参数

    我在测试具有 ref 参数的方法时遇到问题 我不是库 代码所有者 所以我无法更改它 所以请不要建议我删除 ref 参数 我使用这个网站作为参考 http ayende com wiki Rhino 20Mocks 203 5 ashx Ou
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 如何在Android模拟器相机中模拟图片?

    有没有办法将模拟器相机拍摄的照片设置为静态图片 我想在模拟器上使用 zxing 条形码阅读器测试 ir 如果您在 Linux 上运行模拟器 您可以使用 v4l2loopback 和 gstreamer 创建一个显示图像 例如 QRcode
  • 模拟匿名函数

    我正在编写 jUnits 但被 Lambda 表达式困住了 有没有办法模拟匿名函数 return retryTemplate execute retryContext gt return mockedResponse 在上面的代码中 我试图
  • 将文件上传到S3的模拟测试用例

    我们如何模拟文件上传到 S3 我尝试过这样的事情 file mock mock MagicMock spec File name FileMock mock patch storages backends s3boto S3BotoStor
  • 使用 Powermock 测试 Spring 控制器

    我有一个测试特定控制器的类 它工作正常 RunWith SpringJUnit4ClassRunner class ContextConfiguration locations classpath config test applicati
  • 如何在 PHP 中对数组和数据进行排序?

    这个问题旨在作为有关 PHP 中数组排序问题的参考 人们很容易认为您的特定案例是独特的并且值得提出新问题 但大多数实际上只是此页面上的解决方案之一的微小变化 如果您的问题因与此问题重复而被关闭 请仅在您能解释为什么它与以下所有问题显着不同的
  • 将 FORTRAN 对象传递给 C,反之亦然

    我有我的 Fortran 对象 即 this object a this object b this object c 我想将它传递给用 C 编写的代码 我主要是一名 FORTRAN 程序员 而且我很少接触 C 我正在使用iso c bin
  • 匹配数组中的对象并合并

    UPDATE 我有一个名为的对象数组cars包含 li 标签 其中包含有关汽车的属性数据 例如价格 汽车类型等 我的目标是 如果这些汽车符合某些标准 则将它们合并到一个列表中 要求 快速性能 保持相同的汽车数组结构 Main Goal Ma
  • 使用 Retrofit2 和 Mockito 或 Robolectric 进行 Android 单元测试

    我可以测试 Retrofit2beta4 的真实响应吗 我需要 Mockito 或 Robolectic 吗 我的项目中没有活动 它将是一个库 我需要测试服务器是否正确响应 现在我有这样的代码并卡住了 Mock ApiManager api

随机推荐

  • 如何在ssl中激活mq

    我正在尝试通过 jms activemq 发送消息 但我希望它采用 ssl 协议 目前它实际上可以在 tcp 中运行 我使用 jndi 带有一个虚拟主题和 2 个队列 有人可以帮助我吗 我尝试了这个 但我卡住了 服务器无法启动 http a
  • safari/chrome onsubmit="location.reload(true)" 不起作用

    我网站上的表单在 Safari Chrome 中无法正常运行 当用户提交表单时 它会打开一个新选项卡 但我希望重新加载原始页面 带有表单的页面 它适用于 IE Opera 和 Firefox 代码
  • 如何刷新 UITableViewController 或 NSFetchedResultsController?

    我的 UITableViewController 或 NSFetchedResultsController 有一点问题 我不确定问题出在哪里 但我猜是 UITableViewController 正如我所说 我使用 NSFetchedRes
  • 从内存中打开?

    我正在寻找一种直接从内存加载生成的目标代码的方法 我知道 如果我将其写入文件 我可以调用 dlopen 来动态加载其符号并链接它们 然而 考虑到它从内存中开始 写入磁盘 然后由 dlopen 重新加载到内存中 这似乎有点迂回 我想知道是否有
  • Android Studio - 无法应用插件 [id 'com.android.application']

    我正在开发一个应用程序 在我的应用程序中 代码中没有错误 但是当我尝试运行我的项目时 它给出了以下错误 错误 1 1 评估项目 app 时出现问题 无法应用插件 id com android application 无法创建 AppPlug
  • 将 REINSTALLMODE 传递到 MSI 文件

    我正在使用 VisualStudio2005 和 vdproj 创建一个简单的 MSI 文件 当我启动它时 我需要传入 REINSTALLMODE 属性 我知道这可以通过命令行完成 如下所示 msiexec exe i foo msi RE
  • 使用 data.table 加速 rollapply

    我是 data tables 的新手 所以如果这是一个非常基本的问题 我深表歉意 我听说 data tables 在处理大量数据时显着提高了计算时间 因此想看看 data table 是否能够帮助加快 rollapply 函数的速度 如果我
  • Rails 3 link_to 路由(编辑)嵌套资源

    抱歉 如果其他地方有人问过这个问题 但我无法弄清楚 我有一个包含版块 主题和回复的论坛 我正在尝试从显示主题视图中编辑和删除回复 这是结构 resources sections do resources topics do resource
  • 如何将静态二维数组的指针传递给结构/类?

    当我尝试将数组的指针 其中包含程序中某些函数所需的参数 传递给结构时遇到问题 然后该结构应该传递给这些函数 例如 GSL 希望我以这种方式传递参数 一个小示例程序如下所示 include
  • 如何展开使用 R 中的 igraph 包制作的社区图

    尝试在推文数据中查找社区 不同单词之间的余弦相似度形成邻接矩阵 然后 我根据该邻接矩阵创建了图 图表的可视化是这里的任务 Document Term Matrix dtm DocumentTermMatrix tweets adjust t
  • 对静态文件的请求正在命中 ASP.NET MVC3 中的托管代码

    创建自定义 IHttpModules 时 我意识到对静态文件 例如 css 和 js 文件 的请求正在访问托管模块 可能图片也有同样的问题 IIS 不应该绕过 ASP NET 来获取文件系统中存在的文件吗 例如 public class M
  • 如何将字符串中的空格分隔数字序列转换为整数

    我正在尝试使用将字符串元素转换为整数stoiC 11 中的函数并将其用作参数pow函数 像这样 include
  • Android应用程序更新通知

    我一个月前将我的应用程序上传到 Android 市场 现在我已经上传了它的新版本 我的设备上安装了旧版本 但我没有收到更新通知 当我将应用程序更新到 Android Market 时 是否有任何选项可以向用户发送更新通知 不是默认情况下 市
  • 我应该通过任何方式避免 Django 中的多表(具体)继承吗?

    许多经验丰富的开发人员建议不要使用Django多表继承由于其性能不佳 Django 陷阱 具体继承 by 雅各布 卡普兰 莫斯 Django 的核心贡献者 几乎在所有情况下 抽象继承都是更好的方法 长期来看 我见过不少网站在负载下崩溃了 通
  • 如何使用 Java 邮件发送 html 消息

    我一直在从 Java 发送简单的电子邮件 没有问题 但我现在尝试发送一封 html 电子邮件 如下所示 MimeMessage message new MimeMessage Email getSession message setFrom
  • 如何在 Eclipse Mars 中禁用 css 警告“未知属性”?

    我在 css 文件中收到许多 未知属性 警告 这可能是由于我安装了 e fx clipse 2 0 和 Eclipse Web Developer Tools 如果我使用 e fx clipse css 编辑器打开 css 文件并添加 抑制
  • 删除特定字符串后的所有内容(文本的其余部分)

    我怎样才能删除像 gnirts 这样的字符串后面的所有内容 这可能会让您更好地理解 Before 之后 使用查找和替换 按 CTRL H 打开替换对话框 输入 gnirts 到Find what leave Replace with emp
  • 在不同的 .NET 框架之间共享记录器

    我正在创建一个可以在 Net Core 1 2 Net Core 2 0 和 NET Framework 4 6 之间共享的应用程序框架 所以我选择我的项目的目标框架为 NET Standard 在我的框架项目中 我有用于发送短信或电子邮件
  • 查找 Maven 模块化项目中未使用的代码

    我必须清理一个旧项目 一般知识是该项目包含许多我们可以删除的未使用的代码 这将减少一些麻烦并使维护变得更容易 我发现 Eclipse Core Tools 插件看起来是一个很棒的工具 但在我们的例子中 我们有一个 Maven2 项目 它分为
  • 使用 Mockito 模拟局部范围对象的方法

    我需要一些帮助 Example void method1 MyObject obj1 new MyObject obj1 method1 我想嘲笑obj1 method1 在我的测试中 但为了透明 所以我不想制作和更改代码 Mockito