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"));
	}

}

猜你喜欢

转载自zhqn3720.iteye.com/blog/2123488