Spring3.0.2 controller层集成测试

利用Spring 提供的测试框架,对controller层进行集成测试。之前针对controller层的测试,采用的是mock(mockito)service层的方法。

由于开发历史原因,controller层并没有在配置文件中进行bean配置,所以在此处,使用手工创建controller对象,并导入service层。但如果配置好了,直接Autowired就行。不然的话,会报空指针错误。

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.http.HttpMethod;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:CenterApplicationContext.xml"})  
@TransactionConfiguration(  
transactionManager = "txManager", defaultRollback=true)  

public class AccountAPIControllerTest extends AbstractTransactionalJUnit4SpringContextTests{
	@Autowired  
	private ApplicationContext ctx; 
	@Autowired
	private AccountDao accountDao;
	@Autowired
	private ChargeRecordDao chargeRecordDao;
	
	private AccountAPI accountAPI;
	private static MockHttpServletRequest request; 
	private static MockHttpServletResponse response;
	private ReturnMsg reMsg;
	@Before
	public void setUp() throws Exception {
		accountAPI = new AccountAPI();
		accountAPI.setAccountService((AccountService)ctx.getBean("accountService"));
		request = new MockHttpServletRequest();
        request.setCharacterEncoding("UTF-8");
        response = new MockHttpServletResponse();
        reMsg = new ReturnMsg();
	}
	
	//事物回滚
	@Test
	public void testAsyncUpdate() throws Exception {
		request.setRequestURI("/account/asyncupdate");
	    request.setMethod(HttpMethod.POST.name());
		String content = "{\"trans_id\":\"123456789qwertyuikxnchgfbtu23ytd\",\"code\":\"SHANGXUN-CPC\",\"clientID\":\"1453811830\",\"point\":\"1.1234\",\"categoryId\":\"1521\",\"orgType\":\"0\"}";
		reMsg = accountAPI.asyncUpdate(request, response, content);
		//更新账户成功
		assertEquals(AccountAPIResponseType.SUCCESS.getValue(), reMsg.getCode());
		assertEquals("", reMsg.getErrorMsg());
		//返回状态码200
		assertEquals(response.getStatus(), 200);
		//查询账户数据库,相应记录不为空
		assertNotNull(accountDao.getById("1453811830_SHANGXUN-CPC"));
		//查询充值表,相应记录不为空
		assertNotNull(chargeRecordDao.getById("123456789qwertyuikxnchgfbtu23ytd"));
	}

}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值