EassyMock实践 捕获参数
在测试接口过程中,有时我们希望知道自己期望传入的参数是什么,以此来判断传入参数的正确行,这时就需要用到EassyMock的capture方法.该方法能捕获传入的参数存放到自定义的变量中,然后用捕获的参数与期望的参数进行对比,从而判断调用接口时使用的参数是否正确.
下面用例子演示一下:
要测试的接口
package MockTestWithCapture;
public interface Service {
void handle(int arg, int[] array);
}
测试的类
package MockTestWithCapture; import static org.junit.Assert.*;
import org.easymock.*;
import org.junit.*;
import static org.easymock.EasyMock.*; public class TestService { @Test
public void test() { Service mockService = createMock("mockService", Service.class); //首先定义要用来存放捕获参数的变量
Capture<Integer> capArg = new Capture<Integer>();
Capture<Object> capArray = new Capture<Object>();//Capture没有对应数组的,所以只能用Object存放数组,之后在强制性转换 //这里是重点,需要调用capture方法捕获实际传入的参数
//注意这里第一个参数必须用captureInt方法,不能用capture方法,否则因为传入参数类型不匹配而报错
mockService.handle(captureInt(capArg), (int[])capture(capArray)); // 下面的写法也争取
// int a1 = captureInt(capArg);
// int[] a2 = (int[])capture(capArray);
// mockService.handle(a1, a2); replay(mockService); int arg = 100;
int[] array = {1,2,3,4}; //实际调用接口传入的参数是arg和array
mockService.handle(arg, array); //捕获实际传入的参数
int actual1 = capArg.getValue();
int[] actual2= (int[])capArray.getValue(); //这里我们将捕获的参数进行校验
assertEquals(arg, actual1);
assertArrayEquals(array, actual2); verify(mockService);
}
}
EassyMock实践 捕获参数的更多相关文章
- EassyMock实践 自定义参数匹配器
虽然easymock中提供了大量的方法来进行参数匹配,但是对于一些特殊场合比如参数是复杂对象而又不能简单的通过equals()方法来比较,这些现有的参数匹配器就无能为力了.easymock为此提供了I ...
- django的url分配和url捕获参数
django的url分配 一般视图模块(views.py)都放在自己所属的app目录下,在app目录下新建路径模块(urls.py),由app目录下的urls.py来分配当前app的路径. 在app目 ...
- SpringMVC 捕获参数绑定失败时的异常
SpringMVC配置数据验证(JSR-303)中提到了用String类型的域来绑定Ajax中的非法类型的参数. 这样做的目的是一旦发生一种情况,后端可以返回一个自定类的返回值,而不是返回Spring ...
- 深度学习 吴恩达深度学习课程2第三周 tensorflow实践 参数初始化的影响
博主 撸的 该节 代码 地址 :https://github.com/LemonTree1994/machine-learning/blob/master/%E5%90%B4%E6%81%A9%E8 ...
- python注释、脚本参数、字节码
python注释.脚本参数.字节码 --道心 python安装 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3. ...
- [JavaScript] JavaScript事件注册,事件委托,冒泡,捕获,事件流
面试题 event 事件 事件委托是什么? 如何阻止事件冒泡,阻止默认事件呢? Javascript 的事件流模型都有什么? 事件绑定和普通事件有什么区别? Event 对象 Event 对象,当事件 ...
- SHELL (4) —— 变量的数值计算实践
摘自:Oldboy Linux运维——SHELL编程实战 利用(())双括号进行比较及判断: [root@yeebian ~]# echo $((3<8)) 1 #1表示真. [root@yee ...
- 3.C#WebAPI设置路由和参数2
1.上面已经教大家如何修改全局路由了,那么修改完后我们在post请求的要这样使用,其中model模型我就默认你应该已经建好了,没有创建的话请看上一部分 Post方法的参数,如果提交的请求体需要是pho ...
- STM32——输入捕获实验原理及配置步骤
输入捕获实验原理及配置步骤 一.输入捕获概念 STM32的输入捕获,简单的说就是通过检测 TIMx_CHx (定时器X的通道X)上的 边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定 ...
随机推荐
- VMware下桥接设置
操作环境 主机:Win7 X86 SP1 虚拟机:VMware station 8 虚拟机里的系统:Fedora 15 环境上,不管什么系统,什么版本的虚拟机,使用上都是大同小异的,毕竟核心是不变的. ...
- GridView专栏
鉴于GridView的强大,鄙人突然心血来潮,想把GridView单独拿出来整理一下. (一)gridview如何加自增长列 protected void GridView1_RowDataBound ...
- c# 委托 delegate
委托是一种存储函数引用的类型,在事件和事件的处理时有重要的用途 通俗的说,委托是一个可以引用方法的类型,当创建一个委托,也就创建一个引用方法的变量,进而就可以调用那个方法,即委托可以调用它所指的方法. ...
- Python基础之 正则表达式指南
本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...
- MapReduce编程小结
(1)key-value到map端比较容易,每个分片都会交由一个MapTask,而每个分片由InputFormat(一般是FileInputFormat)决定(一般是64M), 每个MapTask会 ...
- JavaWeb核心编程之(四.1)JSP
JSP简介: JSP是简化Servlet编写的一种技术, 它将Java代码和HTML语句混合在一个文件中编写, 只对网页中药动态产生的内容采用Java代码来编写, 而对固定不变的静态内容采用普通的静态 ...
- 【Chromium中文文档】沙箱FAQ
沙箱FAQ 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Sandbox ...
- 算法分析-动态规划(cut_rod)
什么是动态规划,我们要如何描述它? 动态规划算法通常基于一个递推公式及一个或多个初始状态. 当前子问题的解将由上一次子问题的解推出.使用动态规划来解题只需要多项式时间复杂度, 因此它比回溯法.暴力法等 ...
- Linux04--文本编辑器vim
1.Linux系统下常用的文本编辑器介绍 • 命令行方式 vi/vim: 类UNIX操作系统中常用的内置编辑器,习惯操作后功能强大. pico或nano:一种风格很像Micros ...
- Method "setAge" failed for object action.RegistAction@1f05562b [java.lang.No....
大家好,如果大家看到了这篇文字.我觉得大家应该是遇到了该类问题. 首先,NullPointerException 空指针异常. 其次,大家应该是是在使用struts2和hibernate的使用遇到的这 ...