PowerMockito.doReturn 返回 null

2023-12-05

这是我正在测试的课程:

public class A {

public Integer callMethod(){
  return someMethod();
}


private Integer someMethod(){
  //Some Code
  HttpPost httpPost = new HttpPost(oAuthMessage.URL);
  //Some Code
  HttpClient httpClient = new DefaultHttpClient();
  HttpResponse httpResponse = httpClient.execute(httpPost); ------1
  Integer code = httpResponse.getStatusLine().getStatusCode(); ---2
  return code;
}

现在我想模拟第 1 行和第 2 行并返回模拟 HttpResponse 和代码。

我已经尝试过这个但失败了:

@RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.crypto.*")
public class TestA {

//Spying some things here & Injecting them

@Test
public void testA() {


   DefaultHttpClient defaultHttpClientMock = PowerMockito.mock(DefaultHttpClient.class);
   HttpResponse httpResponse = PowerMockito.mock(HttpResponse.class, RETURNS_DEEP_STUBS);
   HttpClient httpClient = PowerMockito.mock(HttpClient.class);
   //HttpResponse httpResponseMock    PowerMockito.mock(HttpResponse.class);
   HttpPost httpPost = PowerMockito.mock(HttpPost.class);
   PowerMockito.whenNew(DefaultHttpClient.class).withNoArguments().thenReturn(defaultHttpClientMock);
   PowerMockito.doReturn(httpResponse).when(httpClient).execute(httpPost);      //Returns null. It never returns httpResponse.
   PowerMockito.when(httpResponse.getStatusLine().getStatusCode()).thenReturn(anyInt());
   //call the method
}

PowerMockito.doReturn(httpResponse).when(httpClient).execute(httpPost)总是返回 null。我希望它返回模拟对象HttpResponse。 我已阅读与此错误相关的其他帖子,但不知道在我的情况下该怎么做。有人可以帮忙吗?


代替

PowerMockito.doReturn(httpResponse).when(httpClient).execute(httpPost);

你应该使用

PowerMockito.when(httpResponse.execute(httpPost)).thenReturn(httpResponse);

您的测试中还存在一些问题:不正确的模拟构造函数,并且您根本不需要 httpResponse。

Update这段代码对我来说工作正常:

@RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.crypto.*")
@PrepareForTest({ HttpPost.class, DefaultHttpClient.class, A.class })
public class TestA {

    @Test
    public void testA() throws Exception {
        HttpPost httpPost = Mockito.mock(HttpPost.class);
        PowerMockito.whenNew(HttpPost.class).withArguments(oAuthMessage.URL).thenReturn(httpPost);

        DefaultHttpClient defaultHttpClientMock = PowerMockito.mock(DefaultHttpClient.class);
        HttpResponse httpResponse = PowerMockito.mock(HttpResponse.class);
        PowerMockito.whenNew(DefaultHttpClient.class).withNoArguments().thenReturn(defaultHttpClientMock);

        PowerMockito.when(defaultHttpClientMock.execute(httpPost)).thenReturn(httpResponse);

        StatusLine statusLine = PowerMockito.mock(StatusLine.class);

        PowerMockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
        Integer expected = new Integer(0);
        PowerMockito.when(statusLine.getStatusCode()).thenReturn(expected);

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

PowerMockito.doReturn 返回 null 的相关文章

  • “java.net.MalformedURLException:未找到协议”读取到 html 文件

    我收到一个错误 java net MalformedURLException Protocol not found 我想读取网络上的 HTML 文件 mainfest uses permission android name android
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复

随机推荐

  • LibGit2Sharp 和身份验证 UI

    我正在使用 LibGit2Sharp 向应用程序添加许多 Git 操作 我已经添加了Microsoft Alm Authentication帮助进行身份验证和凭证管理器访问 它非常适合检索已从命令行输入的凭据 但是 有什么方法可以连接到凭据
  • Gradle 工件依赖图命令是什么?

    我在Gradle 文档 To deal with problems due to version conflicts reports with dependency graphs are also very helpful Such rep
  • 如何使用python在PDF文件的所有页面中添加水印?

    我尝试向 PDF 文件的每一页添加水印 我的 PDF 文件有 58 页 但我的输出文件仅包含 PDF 文件的最后一页 这是我的代码 from PyPDF2 import PdfFileReader PdfFileWriter waterma
  • Ivy:强制依赖本地快照

    我有一个项目A 它依赖于项目B 两者都是正在积极开发的内部项目 假设项目 A 的最新版本是 1 1 2 它依赖于项目 B 1 1 1 现在我们正在开发项目 A 1 2 0 它依赖于也在开发中的项目 B 1 2 0
  • 读取 SSIS 脚本组件源中的对象变量值

    是否可以读取SSIS脚本组件源中的对象变量值 我有一个对象类型的变量 其中包含使用 SQL 脚本任务填充的表中的记录 我已经使用了这个脚本任务 并且通过使用下面的代码它可以完美地工作 oleDA Fill dt Dts Variables
  • 如何赋予 CSS 类优先于 id 的优先级?

    我有一个这样的元素 idname border 2px solid black classname border 2px solid gray div class classname it is a test div 我想给予它的 CSS
  • WP7 Pivot 控件中的切换开关?

    有没有什么方法可以控制轻弹动作的阈值以打开 关闭切换开关 以便它不会干扰枢轴控件的导航 抱歉 但我将避免你的问题 无论如何我无法回答 并建议你使用不同的方法 您可以 我假设 使用复选框来轻松地向使用该应用程序的人提供选项 毕竟 切换开关具有
  • 在 Python 中迭代双端队列的时间复杂度是多少?

    迭代的时间复杂度是多少 或者更准确地说 通过 Python 集合库中的双端队列进行每次迭代的时间复杂度是多少 一个例子是这样的 elements deque 1 2 3 4 for element in elements print ele
  • 无法使用 ruby​​ 脚本从亚马逊 s3 删除文件

    我在用AWS SDK 红宝石用于删除保存在我的亚马逊 s3 帐户的存储桶中的文件 但我不明白为什么我能够使用以下代码从 S3 存储桶中删除所需的文件 这是我的代码 require aws sdk v1 require aws sdk ENV
  • 如何删除 io.on('connection') 监听器?

    我有一些用于 socket io 服务器的代码 大致如下 var io require socket io io io server io on connection connectionHandler 这一切都很好 我想知道如何删除该连接
  • 链接边框和下三角形透明

    我找不到我需要的东西 我有这个代码
  • Android - 获取自定义对话框中组件的句柄

    我正在尝试通过单击菜单中的选项来创建自定义对话框 我继续启动一个新活动 其 Intent 指向 customTextMessageDialog I 我能拿到手柄使用 phoneNumber EditText dialog findViewB
  • 如何在 Exoplayer 中添加下一个、上一个、快退和前进的侦听器

    我正在 ExoPlayer 上工作 我想自定义 ExoPlayer 并监听事件下一个 上一个 倒带 前进 以便当用户单击下一个按钮时播放列表中的下一个视频将播放 而使用上一个时将播放播放列表中的上一个视频将播放播放列表等 我正在使用自定义布
  • 有没有办法回答(或忽略)所有 y/n 提示的“y”?

    我有一个 Jupyter 笔记本 里面有很多大变量 有一次我想扔掉所有我已经用完的变量 我使用 reset selective 变量名来清除每个变量 但这些变量有 60 个 当我运行包含所有 60 个提示的块时 它会要求我为每个清除输入 y
  • 使用c#在Word中按名称访问表

    我有一个包含很多表格的文档 我想使用 C 和 Microsoft Office Interop Word 修改这些表 我读到我可以使用 Tables 接口迭代所有表 问题 是否可以为表指定名称 ID 并通过名称访问表 就像 Powerpoi
  • 通过 github API 关闭拉取请求

    根据我们应用程序的设计要求 我们曾经使用 gitlab API 删除 Gitlab 中的合并请求 现在我们正在迁移到 Github 我正在寻找类似的 API 调用来关闭 Github 上的拉取请求 我通读了文档here 但它没有回答我的问题
  • 对数据框的每一行进行排序[重复]

    这个问题在这里已经有答案了 我正在尝试使用这一行对数据框的每一行进行排序 sapply df function x sort x 但是 对列进行排序而不是对行进行排序 例如 这个数据框 5 10 7 1 5 6 3 9 2 4 4 5 1
  • *a, b, c = line.split() 中的星号有什么作用?

    Assume line is Chicago Sun 01 52 什么是 a b c line split 做 特别是 星号的意义是什么 编辑 经过测试 似乎 Chicago Sun and 01 52 都存储在a b and c 星号似乎
  • 一级缓存可以与 ICriteria 或其他 API 一起使用吗?

    In NHibernate使用时您可以轻松地从一级缓存中受益Load or Get方法 但是关于ICriteria HQL Linq to NHibernate and QueryOver 他们也使用一级缓存吗 他们使用它来返回实体 但查询
  • PowerMockito.doReturn 返回 null

    这是我正在测试的课程 public class A public Integer callMethod return someMethod private Integer someMethod Some Code HttpPost http