假设我有一个模拟对象,我不想存根它的任何方法,但我想要存储一个返回的对象的方法.例如,
when(mockObject.method1()).thenReturn(returnValue)

它是如何正常完成,但我正在寻找,

when(mockObject.method1().method2()).thenReturn(returnValue)

那可能吗?如果我这样做,我会得到一个NullPointerException.目前我有第一个方法返回一个mock对象,然后使用返回的mock对象,存根第二个方法.然而,这些临时模拟对象对我来说是无用的,并且在链接许多方法之后,导致了许多无用的模拟对象.

编辑:实际上,链接可能有效,但我的对象正在导致NPE.这段代码(第一行)导致NPE:

when(graphDb.index().getNodeAutoIndexer()).thenReturn(nodeAutoIndexer);
when(graphDb.index().getRelationshipAutoIndexer()).thenReturn(relAutoIndexer);

但这段代码的作用是:

IndexManager indexManager = mock(IndexManager.class);
when(graphDb.index()).thenReturn(indexManager);
when(indexManager.getNodeAutoIndexer()).thenReturn(nodeAutoIndexer);
when(graphDb.index().getRelationshipAutoIndexer()).thenReturn(relAutoIndexer);

因此,getNodeAutoIndexer()返回一个AutoIndexer对象,因为getRelationshipAutoIndexer()返回一个RelationshipAutoIndexer,所以链接不起作用.两个返回值都被嘲笑如下:

nodeAutoIndexer = (AutoIndexer<Node>) mock(AutoIndexer.class);
relAutoIndexer = mock(RelationshipAutoIndexer.class);

那么可能导致这个问题呢?

解决方法

根本没有问题.

我们来看看这4行代码:

IndexManager indexManager = mock(IndexManager.class);
when(graphDb.index()).thenReturn(indexManager);
when(indexManager.getNodeAutoIndexer()).thenReturn(nodeAutoIndexer);
when(graphDb.index().getRelationshipAutoIndexer()).thenReturn(relAutoIndexer);

第一行创建一个模拟indexManager.

第二个告诉mock graphDb在调用索引方法时返回indexManager(在第一行创建的模拟).

第三个在调用getNodeAutoIndexer方法时,将模拟indexManager(在第一行创建)返回到nodeAutoIndexer.

最后一行调用graphDb.index(),它返回模拟indexManager(你告诉它在第二行),并询问这个indexManager(这是你在第一行创建的模拟),当它的getRelationshipAutoIndexer方法返回relAutoIndexer叫做.

最后一行的工作原理是因为你告诉mock graphDb调用它的索引方法时返回什么.如果你以前没有这样做,那么模拟graphDb.index()方法将返回null,你将有一个NPE.

java – Mockito – 存储由mock对象方法返回的对象的方法的更多相关文章

  1. 解析Android中的LinkedList时的java.lang.AbstractMethodError

    我想窥探android中的Linkedlist.但是,发生了异常.libs的依赖关系是甚至我将mockito-core-1.10.19.jar更新为mockito-core-2.0.31-beta.jar,问题依然存在.但是Mockito.mock还可以,我对这个问题没有任何想法.谢谢.解决方法我刚刚找到了解决问题的另一种方法.对于dexmaker1.2来说这是一个问题,我们应该升级到dexmaker1.4,dexmaker-mockito1.4并包含dexmaker-dx-1.4.所以依赖是

  2. android – 使用Mockito和Retrofit 2.0

    P.S.:我正在使用RxJava和改造,所以适用于RxJava的东西会很棒.谢谢!

  3. 如何使用Mock修改Android设备上的features

    这篇文章主要介绍了如何使用Mock修改Android设备上的features,想了解Mock的同学可以参考下

  4. Node.js服务器环境下使用Mock.js拦截AJAX请求的教程

    Mock.js这个JavaScript库最常见的用法便是被用来拦截AJAX请求,well,这里我们就来看一下Node.js服务器环境下使用Mock.js拦截AJAX请求的教程:

  5. Junit Mockito实现单元测试方法介绍

    JUnit是用于编写和运行可重复的自动化测试开源测试项目框架,这样可以保证我们的代码按与其工作。JUnit可广泛用于工业和作为支架(从命令行)或IDE(如IDE)内单独的java程序

  6. Python+ Flask实现Mock Server详情

    这篇文章主要介绍了Python+ Flask实现Mock Server详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  7. 一文教你利用Stream API批量Mock数据的方法

    在日常开发的过程中我们经常会遇到需要mock一些数据的场景,比如说 mock 一些接口的返回或者说 mock 一些测试消息用于队列生产者发送消息。本文将教你如何通过 Stream API 批量 Mock 数据,需要的可以参考一下

  8. 详解express + mock让前后台并行开发

    这篇文章主要介绍了详解express + mock让前后台并行开发,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. 5分钟教你用nodeJS手写一个mock数据服务器的方法

    这篇文章主要介绍了5分钟教你用nodeJS手写一个mock数据服务器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  10. Node.js测试中的Mock文件系统详解

    相信大家应该都知道在Node.js测试中,常常会需要构造某种项目目录。 为每个测试用例添加相应的目录结构既费时又难以维护。那么这个时候Mock文件系统就派上用场了,下面这篇文章详细的介绍了Mock文件系统,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部