java – 使用Mockito匹配一个对象数组
发布时间:2020-12-14 05:02:38 所属栏目:Java 来源:网络整理
导读:我正在尝试为一个需要一个Request对象数组的方法设置一个模拟: client.batchCall(Request[]) 我试过这两个变体: when(clientMock.batchCall(any(Request[].class))).thenReturn(result);...verify(clientMock).batchCall(any(Request[].class)); 和 when(c
我正在尝试为一个需要一个Request对象数组的方法设置一个模拟:
client.batchCall(Request[]) 我试过这两个变体: when(clientMock.batchCall(any(Request[].class))).thenReturn(result); ... verify(clientMock).batchCall(any(Request[].class)); 和 when(clientMock.batchCall((Request[])anyObject())).thenReturn(result); ... verify(clientMock).batchCall((Request[])anyObject()); 但我可以告诉嘲笑没有被援引. 它们都会导致以下错误: Argument(s) are different! Wanted: clientMock.batchCall( <any> ); -> at com.my.pkg.MyUnitTest.call_test(MyUnitTest.java:95) Actual invocation has different arguments: clientMock.batchCall( {Request id:123},{Request id:456} ); 为什么匹配器不匹配数组?有没有一个特殊的匹配器,我需要使用来匹配一个对象数组?我找到的最接近的是AdditionalMatches.aryEq(),但是这需要我指定数组的确切内容,我宁愿不做. 解决方法
所以我很快把东西放在一起,看看是否可以找到你的问题,下面是我使用任何(Class)匹配器的示例代码,它的工作原理.所以有一些我们没有看到的东西.
测试用例 @RunWith(MockitoJUnitRunner.class) public class ClientTest { @Test public void test() { Client client = Mockito.mock(Client.class); Mockito.when(client.batchCall(Mockito.any(Request[].class))).thenReturn(""); Request[] requests = { new Request(),new Request()}; Assert.assertEquals("",client.batchCall(requests)); Mockito.verify(client,Mockito.times(1)).batchCall(Mockito.any(Request[].class)); } } 客户端类 public class Client { public String batchCall(Request[] args) { return ""; } } 请求类 public class Request { } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – Servlet转发响应调用者/上一页
- java.lang.Long无法强制转换为java.lang.Double
- java – wsimport – 没有名称空间的导入模式==>名称
- java – 使用Asm字节码生成器(ClassWriter)生成通用类型的方
- Java实现多线程断点下载
- Java Map.containsKey()方法:判断Map集合对象中是否包含指
- java – 使用maven rpm插件生成的RPM文件
- 详解SpringMVC拦截器(资源和权限管理)
- java – 在对话框中操作失败时,Primefaces对话框背景不透明
- java – 我需要编写只返回整数的幂的方法