EasyMock

使用EasyMock的总体步骤:


1、生成Mock接口

方式一: ExampleDao mock = EasyMock.createMock(ExampleDao.class);

方式二: IMocksControl control = EasyMock.createControl();
ExampleDao1 mock1 = control.createMock(ExampleDao1.class);
ExampleDao2 mock2 = control.createMock(ExampleDao2.class);

方式三: @RunWith(EasyMockRunner.class)
public class ExampleTest {


@Mock
private ExampleDao mock;//1 注入dao层mock

@TestSubject
private ExampleService exampleService = new ExampleServiceImpl();//2.测试目标类



2、设置预期行为

a.如果返回值是void:
mock.doVoidMethod();  
EasyMock.expectLastCall();// 最新版本的EasyMock可以忽略此句

b.如果要求抛出异常:
EasyMock.expectLastCall().andThrow(new RuntimeException()).anyTimes(); 

c.如果返回值不是void:
EasyMock.expect(mockService.doSomething(isA(Long.class), isA(Report.class),   
        isNull(Report.class))).andReturn("return string").anyTimes();
上例方法中传入3个参数,分别是Long、Report、null——注意,如果参数是基本类型long,则使用EasyMock.anyLong()

3、将Mock对象切换到replay状态
EasyMock.replay(mock);
如果是用MockControl来管理:
control.replay(); 
4、测试
exampleService.setDao(mock);  //注解不需要  自动注入
exampleService.doSomething();  

5、验证Mock对象的行为
EasyMock.verify(mock);
如果是用MockControl来管理:
control.verify();

注意:
expect()注意事项:

a.期望传入参数为基本类型时
用expect来设置mock方法的期望调用方式时,如果使用到基本类型,但是又不要基本类型的值,
不能用:EasyMock.isA(Long.class)
要用:EasyMock.anyLong()

b.期望传入参数可能为null时
要用:or(isA(String.class), isNull()) 
不能用:isA(String.class) 

c.如果返回结果在运行时才能确定
很可能某个方法期望的返回结果不是固定的,例如根据传入参数不同而不同;这时需要使用andAnswer():
EasyMock.expect(mockService.execute(EasyMock.anyInt())).andAnswer(new IAnswer<Integer>() {  
            public Integer answer() throws Throwable {  
                Integer count = (Integer) EasyMock.getCurrentArguments()[0];  
                return count * 2;  
            }  
        });  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了使用 EasyMock 发出 POST 请求,你可以按照以下步骤进行操作: 1. 首先,你需要创建一个模拟的 HTTP 请求对象。在 EasyMock 中,你可以使用 `org.easymock.EasyMock` 类的 `createMock` 方法创建该对象。 ```java import org.easymock.EasyMock; // 创建模拟的 HTTP 请求对象 HttpServletRequest request = EasyMock.createMock(HttpServletRequest.class); ``` 2. 接下来,你需要设置该请求对象的相关属性,例如请求方法、请求路径、请求参数等。 ```java // 设置请求方法为 POST EasyMock.expect(request.getMethod()).andReturn("POST").anyTimes(); // 设置请求路径 EasyMock.expect(request.getRequestURI()).andReturn("/your-api-endpoint").anyTimes(); // 设置请求参数 EasyMock.expect(request.getParameter("paramName")).andReturn("paramValue").anyTimes(); ``` 3. 然后,你需要创建一个模拟的 HTTP 响应对象,并设置相应的属性。 ```java // 创建模拟的 HTTP 响应对象 HttpServletResponse response = EasyMock.createMock(HttpServletResponse.class); // 设置响应状态码 response.setStatus(HttpServletResponse.SC_OK); // 设置响应内容类型 response.setContentType("application/json"); // 设置响应内容 response.getWriter().write("Response body"); ``` 4. 最后,你可以使用 `org.easymock.EasyMock` 类的 `replay` 和 `verify` 方法来启动和验证模拟对象。 ```java // 启动模拟对象 EasyMock.replay(request, response); // 执行你的代码逻辑,处理 POST 请求 // 验证模拟对象的方法是否按预期被调用 EasyMock.verify(request, response); ``` 通过以上步骤,你就可以使用 EasyMock 模拟一个 POST 请求,并进行相应的测试。请根据你的具体需求,适当修改代码中的请求路径、请求参数、响应状态码和响应内容等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值