首页 > 其他分享 >mockito5.4.0单元测试(12) --spy一个真实的对象,使该真实对象可以被mock操作和verify验证

mockito5.4.0单元测试(12) --spy一个真实的对象,使该真实对象可以被mock操作和verify验证

时间:2023-06-26 17:23:24浏览次数:53  
标签:真实 12 get 对象 verify list spy

mockito官方文档地址: https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#spy

// new一个真实对象
List list = new LinkedList();
List spy = spy(list); // 把这个真实对象放到spy方法里

//optionally, you can stub out some methods:
when(spy.size()).thenReturn(100);   // spy之后,就可以对这个真实对象做一些mock操作了

//using the spy calls *real* methods
spy.add("one");
spy.add("two");

//prints "one" - the first element of a list
System.out.println(spy.get(0));

//size() method was stubbed - 100 is printed
System.out.println(spy.size());

//optionally, you can verify
verify(spy).add("one");   // spy之后,就可以对这个真实对象做verify验证了。
verify(spy).add("two");

 

spy真实对象的一些可能会引起抛出异常的代码:

try {
    //Impossible: real method is called so spy.get(0) throws IndexOutOfBoundsException (the list is yet empty)
    // 因为spy对象此时是真实对象,所以这里的get 0就会直接报索引异常,因为此时spy作为真实的list对象,还是个空集合。
    when(spy.get(0)).thenReturn("foo");
} catch (Exception e) {
    log.error("因为spy对象此时是真实对象,所以这里的get 0就会直接报索引异常", e);
}

//You have to use doReturn() for stubbing
// 如果你非要使spy真实对象返回一个mock值,你只能使用这种方式
doReturn("foo").when(spy).get(0);
log.info("这个log会正常打印的,spy.get(0)::: {}", spy.get(0));

 

 

end.

标签:真实,12,get,对象,verify,list,spy
From: https://www.cnblogs.com/zhuwenjoyce/p/17506238.html

相关文章

  • LeetCode 128. 最长连续序列
    为什么这题我都不会,脑袋有点累,状态真差classSolution{public:intlongestConsecutive(vector<int>&nums){unordered_set<int>s(nums.begin(),nums.end());//记录数字是否出现过intres=0;for(autoi:nums)//枚举每个数字,查看以当前数字......
  • WIN11 INTEL 12-13代大小核默认调度策略
    WIN11INTEL12-13代大小核默认调度策略  生效的异类策略:使用异类策略0.异类线程调度策略:自动。异类短运行线程调度策略:自动。......
  • 22年12月Tita升级绩效&调查强整合
    此功能灰度发布,如想使用,请咨询售后升级快速一览:·【考核模板】绩效结果确认节点增加运营调查;绩效结果确认节点增加运营调查点击免费领取绩效考核模版等资料使用场景:企业想要了解本次考核活动中员工的一些反馈和建议以及考核的落地情况1.前往调查应用创建相应的调查活......
  • Linux多线程12-生产者和消费者模型
    一个最简单的生产者消费者模型/*生产者消费者模型(粗略版)*/#include<stdio.h>#include<pthread.h>#include<stdlib.h>#include<unistd.h>structNode{intnum;structNode*next;};//头节点structNode*head=NULL;void*producer(void*arg){......
  • 1207. 独一无二的出现次数
    给你一个整数数组arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回true;否则返回false。示例1:输入:arr=[1,2,2,1,1,3]输出:true解释:在该数组中,1出现了3次,2出现了2次,3只出现了1次。没有两个数的出现次数相同。>代码class......
  • AIX中使用DBCA创建数据库ora-12547错误解决一例
                             AIX中使用DBCA创建数据库ora-12547错误解决一例 Couldnotloadprogramoracledevmdm:Symbolresolutionfailedfor/usr/lib/libc.a[aio_64.o]because:Symbolkaio_rdwr64(number1)isnotexportedfrom......
  • MUR80120PT-ASEMI快恢复二极管MUR80120PT
    编辑-ZMUR80120PT在TO-247封装里采用的2个芯片,其尺寸都是140MIL,是一款高耐压大电流快恢复二极管。MUR80120PT的浪涌电流Ifsm为600A,漏电流(Ir)为10uA,其工作时耐温度范围为-55~150摄氏度。MUR80120PT采用抗冲击硅芯片材质,里面有2颗芯片组成。MUR80120PT的电性参数是:正向电流(Io)为80A......
  • MUR80120PT-ASEMI快恢复二极管MUR80120PT
    编辑-ZMUR80120PT在TO-247封装里采用的2个芯片,其尺寸都是140MIL,是一款高耐压大电流快恢复二极管。MUR80120PT的浪涌电流Ifsm为600A,漏电流(Ir)为10uA,其工作时耐温度范围为-55~150摄氏度。MUR80120PT采用抗冲击硅芯片材质,里面有2颗芯片组成。MUR80120PT的电性参数是:正向电流(Io)为8......
  • 【已解决】【Tensorflow2.12.0版本以后合并CPU和GPU版】Tensorflow-gpu==2.12.0 安装
    !https://zhuanlan.zhihu.com/p/639416152解决方式:直接上解决方式,需要知道原因的看后文。直接安装tensroflow,从2022年12月起tensorflow-gpu已经合并到tensorflow包中了pipinstalltensorflow==2.12.0-ihttps://pypi.tuna.tsinghua.edu.cn/simple这里使用清华源......
  • 二叉树-快排-leetcode912
    给你一个整数数组nums,请你将该数组升序排列。示例1:输入:nums=[5,2,3,1]输出:[1,2,3,5]示例2:输入:nums=[5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1<=nums.length<=5*104-5*104<=nums[i]<=5*104思路:快排,或者叫前序二叉树,排序后端结果是一个二叉搜索树//lee......