A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chenjianxiang 中级黑马   /  2014-12-2 20:19  /  1013 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

二:springmvc controller 单元测试

单元测试代码如下:

import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("/META-INF/test-servlet-context.xml")
public class RechargeControllerTest{
@Autowired
private MobileNoAttrService mobileNoAttrService;
@Autowired
private RechargeController rechargeController;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.standaloneSetup(rechargeController).build();
MobileNoAttr mobileNoAttr=new MobileNoAttr();
mobileNoAttr.setProvince("新疆");
mobileNoAttr.setCity("乌鲁木齐");
mobileNoAttr.setAreaCode("0991");
mobileNoAttr.setMobileType("中国移动");
mobileNoAttr.setMobileNo("1390000");
when(mobileNoAttrService.queryMobileNoAttr("1390000")).thenReturn(null);
when(mobileNoAttrService.queryMobileNoAttrFromOut("1390000")).thenReturn(mobileNoAttr);
}
@Test
public void testMakeOrder() throws Exception {
this.mockMvc.perform(get("/makeOrder").param("mobileNo", "13900008888").param("faceValue", "100")
.accept(MediaType.parseMediaType("application/json;charset=UTF-8")))
.andExpect(status().isOk())
.andExpect(jsonPath("$.resCode").value("1000"));
}
}

get方法返回的是一个request的构造器,你可以通过这个对象往request 或者session中设置值。

配置文件内容如下:

<bean id="mobileNoAttrService" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="tengfei.service.MobileNoAttrService"/>
</bean>
<bean id="interMsgService" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="tengfei.service.InterMsgService"/>
</bean>
<bean id="userService" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="tengfei.service.UserService"/>
</bean>
<context:component-scan base-package="tengfei.controller" />

这个单元测试的方法能够模拟你发请求调用controller接口,当然他并不是真的发起http请求


评分

参与人数 2黑马币 +35 收起 理由
疯狂的土贼 + 20 很给力!
.Mr + 15

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马