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)上的 边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定 ...
随机推荐
- 设置TextView水平居中显示
1.让TextView里的内容水平居中 android:gravity="center_horizontal" 2.让TextView控件在它的父布局里水平居中 android:l ...
- flex布局的使用,纪念第一次开发手机网站
一直专注于PC网站的开发,不曾接触手机网站,于今日机缘巧合也是公司业务需要,并在之前学习过flex的布局,于是一并实践.碰到的问题还是很多的,主要是谈谈flex布局. flex布局是css3里的内容, ...
- ubuntu下nvm,node以及npm的安装与使用
一:安装nvm 首先下载nvm,这里我们需要使用git,如果没有安装git,可以使用 sudo apt-get install git 来安装 git clone https://github.com ...
- HMM模型实例 mahout官网上的案例
原理:http://www.cnblogs.com/CheeseZH/p/4229910.html Example To build a Hidden Markov Model and use it ...
- IDEA工具配置以及常用快捷键
1.修改JVM参数 (IntelliJ IDEA 10.0.1包含以上版本不需要设置)修改idea.exe.vmoptions配置文件调整以下内容:-Xms256m-Xmx384m-XX:MaxPer ...
- GetRect:通过提供点和宽度返回对应矩形RECT
RECT GetRect(int x,int y,int width,int height); 描述:通过提供点和宽度返回对应矩形RECT 返回:矩形结构RECT 参数: x:X轴坐标 y:Y轴坐标 ...
- hql中or的用法(代替union)
hql中不支持union和unionAll关键字因为在查询出的结果集中无法进行排序.代替union起到相同作用的 是or关键字.在构造hql时考虑使用or代替union产生多个结果集的组合. 详解如下 ...
- 解决chrome下上传文件 返回值带 <pre style="word-wrap:break-word;white-space:prewrap;"></pre>
解决办法:后台 response.setContentType("text/html");
- html中的圆角边框
border-radius:20px; radius:以某某为半径画圆. 如何制作一个圆形: div{height:150px;//像素的一半,再加上边框的像素 width:150px; border ...
- ArrayList--卧槽这就是源码
最近在<数据结构与算法分析(java版)>中看到了实现ArrayList的简易代码,亲自做了一下.个中的疑点还是在代码中实现了一下.其中就包括内部类Iterator对外部成员访问的问题. ...