使用Mock进行单元测试时遇到了该问题:Argument passed to when( ) is not a mock!
首先翻译一下:传递给when( )方法的参数并不是一个Mock对象。

使用Mock时我们主要会用到@InjectMocks、@Mock和@Spy这三个注解,方法则主要是doReturn-when和when-thenReturn两种方式。

其中,@InjectMocks和@Spy创建的是一个实例对象,@Mock则创建的是一个虚拟对象,@Mock可以单独使用或者和@InjectMocks共同使用,@Mock的对象会被注入到@InjectMocks中。

A类依赖B类,通常会这样使用@InjectMocks注解A,使用@Mock注解B,例如Controller层依赖Service层,那么当写Contoller层的单元测试时可以这么写:

@InjectMocks
private MyController myController;@Mock
private MyService myService;

如果我们写了这样的代码,就会遇到标题中的问题:

@Test
public void test() {//1.假设controller层的xxxMethod方法的返回值是XXXMockito.doReturn(XXX).when(myController).xxxMethod(xxxArgs);//2.调用测试方法并验证Assert.equals(XXX, myController.xxxMethod(xxxArgs));
}

这是因为doReturn-when是模拟方法调用,而并非发起真实调用,而when中的参数myController是被@InjectMocks注解的,这样改就可以了:

@Test
public void test() {//1.假设controller层的xxxMethod方法的返回值是XXXMockito.when(myController.xxxMethod(xxxArgs)).thenReturn(XXX);//2.调用测试方法并验证Assert.equals(XXX, myController.xxxMethod(xxxArgs));
}

Mock实现单元测试报错:Argument passed to when( ) is not a mock!相关推荐

  1. java test报错_Java 单元测试报错

    «Java 单元测试报错:Test class should have exactly one public zero-argument constructor» public class Test{ ...

  2. java argument type mismatch_解决mybatisplus插入报错argument type mismatch的问题

    今天使用argument type mismatch发现插入的时候报错 java.lang.IllegalArgumentException: argument type mismatch 从错误中看 ...

  3. Junit单元测试报错Class not found可能原因

    Junit单元测试报错Class not found可能原因 1.将maven的后台运行关闭 2.Test方法中的语法错误

  4. Spring的maven项目单元测试报错 : Error:java:JDK isn't specified for module

    单元测试报错,跑不起来,报错如下: Error:java:JDK isn't specified for module 原来把  . idea 目录删除没有重启项目,重启项目 以后刷新maven: 点 ...

  5. spring单元测试报错:Failed to load ApplicationContext 的解决方法

    使用idea 配置单元测试之后,配置完spring的注解@junit 和@runer 之后 一直报错. 最后发现是默认使用jdk1.8引起的,使用jdk1.7即可. 转载于:https://www.c ...

  6. Maven 单元测试报错:错误: 找不到或无法加载主类 @{failsafeArgLine}

    1.视界 2.背景 Git 下载一个项目:https://github.com/apache/rocketmq-externals 然后运行里面的单元测试类报错 org.apache.rocketmq ...

  7. mybatis报错:argument type mismatch

    完整报错 当出现这个错误的时候先检查数据类型是否匹配,如果没问题的话往下看 nested exception is org.apache.ibatis.reflection.ReflectionExc ...

  8. mybatisplus插入报错argument type mismatch

    今天使用argument type mismatch发现插入的时候报错java.lang.IllegalArgumentException: argument type mismatch. 从错误中看 ...

  9. springboot使用Junit进行单元测试报错:Could not initialize plugin: interface org.mockito.plugins.MockMaker

     解决方案:在pom.xml文件中加入一下代码 注意:不要去掉版本号->在spring-boot-starter-parent(version:2.1.6.RELEASE)这个父工程中,已经有以 ...

  10. Nodejs: Buffer报错argument must be an Array of Buffer or Uint8Array instances

    最近项目有个需求需要在和第三方API接口进行交互时,在JSON字符串最前面加上16个字节的签名字节,为了简化问题忽略JSON以及16个字节的具体取值. 错误代码: buff = Buffer.from ...

最新文章

  1. 【译】Withdrawal symptoms
  2. 0220互联网新闻 | 豆瓣FM获腾讯音乐娱乐集团投资;华为云将在新加坡拓展云平台和人工智能能力...
  3. 利用putty的pscp命令执行Linux服务器命令
  4. User Stories - 最佳实践 (Best Practices)
  5. php 开发框架 (资料收集)
  6. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...
  7. Socket和ServerSocket
  8. LeetCode 1140. 石子游戏 II(DP)*
  9. LintCode 386. 最多有k个不同字符的最长子字符串(双指针)
  10. Facebook AI何恺明等最新研究MoCo(动量对比学习)第二版,超越Hinton的SimCLR,刷新SOTA准确率...
  11. Nagios 安装方法
  12. 你网络成瘾了吗 小心一堆怪病找上你
  13. memcache学习之c客户端
  14. python对象的深复制与浅复制
  15. video上传架构设计与实现
  16. 实体类转换为XML字符串
  17. python 直线检测_python hough变换检测直线的实现方法
  18. dropbox中国大陆使用问题
  19. 机器学习(8)——回归和异常值处理(安然数据集)
  20. 关于纳什均衡与博弈论

热门文章

  1. 加速开发效率,最低1元起拍,来戴尔官网领走你的高效编程神器Optiplex 5070!
  2. 无路可逃java攻略_《生化危机2:重制版》幽灵生还者无路可逃流程攻略
  3. java excel添加公式_Java 添加、读取 Excel 公式
  4. Linux内存管理 - slab分配器和kmalloc
  5. 读史笔记(I) 日光之下
  6. Enterprise Architect学习(1)
  7. 百度快照不更新是什么原因导致的
  8. 真空密码字典生成器分享
  9. Ch8 电路噪声学习笔记(一)baker 《CMOS Circuit Design, Layout, and Simulation》
  10. android 计步器acc,利用腾讯云云函数执行部署修改小米运动步数代码_每天自动修改步数...