spring boot使用TestRestTemplate集成测试 RESTful 接口
Posted 小强找bug-->修bug-->防bug--》虐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot使用TestRestTemplate集成测试 RESTful 接口相关的知识,希望对你有一定的参考价值。
只是单纯的记录一下如何用TestRestTemplate访问受security保护的api,供以后查阅。
-
-
-
-
public class AccountControllerTests {
-
-
private TestRestTemplate restTemplate;
-
private HttpEntity httpEntity;
-
-
/**
-
* 登录
-
* @throws Exception
-
*/
-
private void login() throws Exception {
-
String expectStr = "{"code":0,"msg":"success"}";
-
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
-
map.add("username", "183xxxxxxxx");
-
map.add("password", "123456");
-
ResponseEntity responseEntity = restTemplate.postForEntity("/api/account/sign_in", map, String.class);
-
//添加cookie以保持状态
-
HttpHeaders headers = new HttpHeaders();
-
String headerValue = responseEntity.getHeaders().get("Set-Cookie").toString().replace("[", "");
-
headerValue = headerValue.replace("]", "");
-
headers.set("Cookie", headerValue);
-
httpEntity = new HttpEntity(headers);
-
assertThat(responseEntity.getBody()).isEqualTo(expectStr);
-
}
-
-
/**
-
* 登出
-
* @throws Exception
-
*/
-
private void logout() throws Exception {
-
String expectStr = "{"code":0,"msg":"success"}";
-
String result = restTemplate.postForObject("/api/account/sign_out", null, String.class, httpEntity);
-
httpEntity = null;
-
assertThat(result).isEqualTo(expectStr);
-
}
-
-
/**
-
* 获取信息
-
* @throws Exception
-
*/
-
private void getUserInfo() throws Exception {
-
Detail detail = new Detail();
-
detail.setNickname("疯狂的米老鼠");
-
detail.setNicknamePinyin("fengkuangdemilaoshu");
-
detail.setSex(1);
-
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
detail.setCreatedAt(sdf.parse("2017-11-03 16:43:27"));
-
detail.setUpdatedAt(sdf.parse("2017-11-03 16:43:27"));
-
Role role = new Role();
-
role.setName("ROLE_USER_NORMAL");
-
Set<Role> roles = new HashSet<>();
-
roles.add(role);
-
User user = new User();
-
user.setId(1L);
-
user.setPhone("183xxxxxxxx");
-
user.setEmail("xxxxxx@gmail.com");
-
user.setDetail(detail);
-
user.setRoles(roles);
-
ResultBean<User> resultBean = new ResultBean<>();
-
resultBean.setData(user);
-
ObjectMapper om = new ObjectMapper();
-
String expectStr = om.writeValueAsString(resultBean);
-
ResponseEntity<String> responseEntity = restTemplate.exchange("/api/user/get_user_info", HttpMethod.GET, httpEntity, String.class);
-
assertThat(responseEntity.getBody()).isEqualTo(expectStr);
-
}
-
-
-
public void testAccount() throws Exception {
-
login();
-
getUserInfo();
-
logout();
-
}
以上是关于spring boot使用TestRestTemplate集成测试 RESTful 接口的主要内容,如果未能解决你的问题,请参考以下文章
spring boot8.spring boot的日志框架使用
(转)Spring Boot 2 :使用 Docker 部署 Spring Boot