修改getResponse的类型参数
This commit is contained in:
@@ -48,6 +48,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
|
|||||||
@ActiveProfiles("test")
|
@ActiveProfiles("test")
|
||||||
public class BaseTest {
|
public class BaseTest {
|
||||||
|
|
||||||
|
|
||||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||||
|
|
||||||
protected MockMvc mockMvc;
|
protected MockMvc mockMvc;
|
||||||
@@ -57,7 +58,12 @@ public class BaseTest {
|
|||||||
* jackson 序列化/反序列化Json
|
* jackson 序列化/反序列化Json
|
||||||
*/
|
*/
|
||||||
protected final ObjectMapper mapper = new ObjectMapper();
|
protected final ObjectMapper mapper = new ObjectMapper();
|
||||||
|
protected static final TypeReference<?> BOOLEAN_TYPE = new TypeReference<Response<Boolean>>() {
|
||||||
|
};
|
||||||
|
protected static final TypeReference<?> STRING_TYPE = new TypeReference<Response<String>>() {
|
||||||
|
};
|
||||||
|
protected static final TypeReference<?> OBJECT_TYPE = new TypeReference<Response<String>>() {
|
||||||
|
};
|
||||||
@Autowired
|
@Autowired
|
||||||
private WebApplicationContext wac;
|
private WebApplicationContext wac;
|
||||||
protected MockHttpSession session;
|
protected MockHttpSession session;
|
||||||
@@ -206,19 +212,29 @@ public class BaseTest {
|
|||||||
return mockMvc.perform(builder).andExpect(status().isOk());
|
return mockMvc.perform(builder).andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected <T> Response<T> getResponse(String json) {
|
||||||
|
return getResponse(json, OBJECT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected <T> Response<T> getResponse(MvcResult result) {
|
||||||
|
return getResponse(result, OBJECT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据json 信息反序列化成Response对象
|
* 根据json 信息反序列化成Response对象
|
||||||
|
*
|
||||||
* @param json json
|
* @param json json
|
||||||
* @param <T> 泛型
|
* @param <T> 泛型
|
||||||
* @return Response对象
|
* @return Response对象
|
||||||
*/
|
*/
|
||||||
protected <T> Response<T> getResponse(String json) {
|
protected <T> Response<T> getResponse(String json, TypeReference<?> responseType) {
|
||||||
Response<T> response = null;
|
Response<T> response = null;
|
||||||
|
System.out.println(responseType.getType());
|
||||||
try {
|
try {
|
||||||
response = mapper.readValue(json, new TypeReference<Response<T>>() {
|
response = mapper.readValue(json, responseType);
|
||||||
});
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.error("接续json Response对象错误,json:[{}]", json);
|
logger.error("解析json Response对象错误,json:[{}]", json);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
assertNotNull(response);
|
assertNotNull(response);
|
||||||
@@ -227,17 +243,19 @@ public class BaseTest {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据json 信息反序列化成Response对象
|
* 根据json 信息反序列化成Response对象
|
||||||
|
*
|
||||||
* @param result MvcResult
|
* @param result MvcResult
|
||||||
* @param <T> 泛型
|
* @param <T> 泛型
|
||||||
* @return Response对象
|
* @return Response对象
|
||||||
*/
|
*/
|
||||||
protected <T> Response<T> getResponse(MvcResult result) {
|
protected <T> Response<T> getResponse(MvcResult result, TypeReference<?> responseType) {
|
||||||
try {
|
try {
|
||||||
return getResponse(result.getResponse().getContentAsString());
|
return getResponse(result.getResponse().getContentAsString(), responseType);
|
||||||
} catch (UnsupportedEncodingException e) {
|
} catch (UnsupportedEncodingException e) {
|
||||||
logger.error("接续json Response对象错误,result:[{}]", result);
|
logger.error("解析json Response对象错误,result:[{}]", result);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,11 @@ import cn.celess.blog.entity.Article;
|
|||||||
import cn.celess.blog.entity.Response;
|
import cn.celess.blog.entity.Response;
|
||||||
import cn.celess.blog.entity.Tag;
|
import cn.celess.blog.entity.Tag;
|
||||||
import cn.celess.blog.entity.model.ArticleModel;
|
import cn.celess.blog.entity.model.ArticleModel;
|
||||||
|
import cn.celess.blog.entity.model.CategoryModel;
|
||||||
import cn.celess.blog.entity.model.PageData;
|
import cn.celess.blog.entity.model.PageData;
|
||||||
import cn.celess.blog.entity.request.ArticleReq;
|
import cn.celess.blog.entity.request.ArticleReq;
|
||||||
import cn.celess.blog.mapper.ArticleMapper;
|
import cn.celess.blog.mapper.ArticleMapper;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
|
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
|
||||||
@@ -23,6 +25,10 @@ import static cn.celess.blog.enmu.ResponseEnum.*;
|
|||||||
public class ArticleControllerTest extends BaseTest {
|
public class ArticleControllerTest extends BaseTest {
|
||||||
@Autowired
|
@Autowired
|
||||||
ArticleMapper articleMapper;
|
ArticleMapper articleMapper;
|
||||||
|
private static final TypeReference<?> ARTICLE_MODEL_TYPE = new TypeReference<Response<ArticleModel>>() {
|
||||||
|
};
|
||||||
|
private static final TypeReference<?> ARTICLE_MODEL_PAGE_TYPE = new TypeReference<Response<PageData<ArticleModel>>>() {
|
||||||
|
};
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void create() {
|
public void create() {
|
||||||
@@ -40,7 +46,7 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
getMockData(post, adminLogin(), articleReq).andDo(result -> {
|
getMockData(post, adminLogin(), articleReq).andDo(result -> {
|
||||||
Response<ArticleModel> response = getResponse(result);
|
Response<ArticleModel> response = getResponse(result, ARTICLE_MODEL_TYPE);
|
||||||
assertEquals(SUCCESS.getCode(), response.getCode());
|
assertEquals(SUCCESS.getCode(), response.getCode());
|
||||||
assertNotNull(response.getResult());
|
assertNotNull(response.getResult());
|
||||||
ArticleModel articleModel = response.getResult();
|
ArticleModel articleModel = response.getResult();
|
||||||
@@ -76,7 +82,7 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
try {
|
try {
|
||||||
Article finalArticle = article;
|
Article finalArticle = article;
|
||||||
getMockData(delete, adminLogin()).andDo(result -> {
|
getMockData(delete, adminLogin()).andDo(result -> {
|
||||||
Response<Boolean> response = getResponse(result);
|
Response<Boolean> response = getResponse(result, BOOLEAN_TYPE);
|
||||||
assertEquals(SUCCESS.getCode(), response.getCode());
|
assertEquals(SUCCESS.getCode(), response.getCode());
|
||||||
// 断言删除成功
|
// 断言删除成功
|
||||||
assertTrue(response.getResult());
|
assertTrue(response.getResult());
|
||||||
@@ -104,7 +110,7 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
articleReq.setTitle("test-" + article.getTitle());
|
articleReq.setTitle("test-" + article.getTitle());
|
||||||
try {
|
try {
|
||||||
getMockData(put("/admin/article/update"), adminLogin(), articleReq).andDo(result -> {
|
getMockData(put("/admin/article/update"), adminLogin(), articleReq).andDo(result -> {
|
||||||
Response<ArticleModel> response = getResponse(result);
|
Response<ArticleModel> response = getResponse(result, ARTICLE_MODEL_TYPE);
|
||||||
assertEquals(SUCCESS.getCode(), response.getCode());
|
assertEquals(SUCCESS.getCode(), response.getCode());
|
||||||
ArticleModel a = response.getResult();
|
ArticleModel a = response.getResult();
|
||||||
assertEquals(articleReq.getCategory(), a.getCategory());
|
assertEquals(articleReq.getCategory(), a.getCategory());
|
||||||
@@ -132,11 +138,11 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
|
|
||||||
// 文章不存在
|
// 文章不存在
|
||||||
getMockData(MockMvcRequestBuilders.get("/article/articleID/-1"))
|
getMockData(MockMvcRequestBuilders.get("/article/articleID/-1"))
|
||||||
.andDo(result -> assertEquals(ARTICLE_NOT_EXIST.getCode(), getResponse(result).getCode()));
|
.andDo(result -> assertEquals(ARTICLE_NOT_EXIST.getCode(), getResponse(result, STRING_TYPE).getCode()));
|
||||||
|
|
||||||
// 正常情况
|
// 正常情况
|
||||||
getMockData(MockMvcRequestBuilders.get("/article/articleID/" + articleID + "?update=false")).andDo(result -> {
|
getMockData(MockMvcRequestBuilders.get("/article/articleID/" + articleID + "?update=false")).andDo(result -> {
|
||||||
Response<ArticleModel> response = getResponse(result);
|
Response<ArticleModel> response = getResponse(result, ARTICLE_MODEL_TYPE);
|
||||||
// 断言获取数据成功
|
// 断言获取数据成功
|
||||||
assertEquals(SUCCESS.getCode(), response.getCode());
|
assertEquals(SUCCESS.getCode(), response.getCode());
|
||||||
assertNotNull(response.getResult());
|
assertNotNull(response.getResult());
|
||||||
@@ -167,7 +173,7 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
// 测试不带参数访问
|
// 测试不带参数访问
|
||||||
getMockData(MockMvcRequestBuilders.get("/articles"));
|
getMockData(MockMvcRequestBuilders.get("/articles"));
|
||||||
getMockData(MockMvcRequestBuilders.get("/articles?page=1&count=5")).andDo(result -> {
|
getMockData(MockMvcRequestBuilders.get("/articles?page=1&count=5")).andDo(result -> {
|
||||||
Response<PageData<ArticleModel>> response = getResponse(result);
|
Response<PageData<ArticleModel>> response = getResponse(result, ARTICLE_MODEL_PAGE_TYPE);
|
||||||
// 断言获取数据成功
|
// 断言获取数据成功
|
||||||
assertEquals(SUCCESS.getCode(), response.getCode());
|
assertEquals(SUCCESS.getCode(), response.getCode());
|
||||||
// 结果集非空
|
// 结果集非空
|
||||||
@@ -200,18 +206,18 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
public void adminArticles() {
|
public void adminArticles() {
|
||||||
try {
|
try {
|
||||||
getMockData(get("/admin/articles?page=1&count=10")).andExpect(result ->
|
getMockData(get("/admin/articles?page=1&count=10")).andExpect(result ->
|
||||||
assertEquals(HAVE_NOT_LOG_IN.getCode(), getResponse(result).getCode())
|
assertEquals(HAVE_NOT_LOG_IN.getCode(), getResponse(result, STRING_TYPE).getCode())
|
||||||
);
|
);
|
||||||
|
|
||||||
// User权限登陆
|
// User权限登陆
|
||||||
getMockData(get("/admin/articles?page=1&count=10"), userLogin()).andDo(result ->
|
getMockData(get("/admin/articles?page=1&count=10"), userLogin()).andDo(result ->
|
||||||
assertEquals(PERMISSION_ERROR.getCode(), getResponse(result).getCode())
|
assertEquals(PERMISSION_ERROR.getCode(), getResponse(result, STRING_TYPE).getCode())
|
||||||
);
|
);
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
// admin权限登陆
|
// admin权限登陆
|
||||||
int finalI = i;
|
int finalI = i;
|
||||||
getMockData(get("/admin/articles?page=1&count=10&deleted=" + (i == 1)), adminLogin()).andDo(result -> {
|
getMockData(get("/admin/articles?page=1&count=10&deleted=" + (i == 1)), adminLogin()).andDo(result -> {
|
||||||
Response<PageData<ArticleModel>> response = getResponse(result);
|
Response<PageData<ArticleModel>> response = getResponse(result, ARTICLE_MODEL_PAGE_TYPE);
|
||||||
assertEquals(SUCCESS.getCode(), response.getCode());
|
assertEquals(SUCCESS.getCode(), response.getCode());
|
||||||
assertNotNull(response.getResult());
|
assertNotNull(response.getResult());
|
||||||
// 判断pageInfo是否包装完全
|
// 判断pageInfo是否包装完全
|
||||||
@@ -245,12 +251,12 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
// 分类不存在
|
// 分类不存在
|
||||||
String categoryName = "NoSuchCategory";
|
String categoryName = "NoSuchCategory";
|
||||||
getMockData(MockMvcRequestBuilders.get("/articles/category/" + categoryName + "?page=1&count=10"))
|
getMockData(MockMvcRequestBuilders.get("/articles/category/" + categoryName + "?page=1&count=10"))
|
||||||
.andDo(result -> assertEquals(CATEGORY_NOT_EXIST.getCode(), getResponse(result).getCode()));
|
.andDo(result -> assertEquals(CATEGORY_NOT_EXIST.getCode(), getResponse(result, STRING_TYPE).getCode()));
|
||||||
// 正常查询
|
// 正常查询
|
||||||
categoryName = "linux";
|
categoryName = "linux";
|
||||||
getMockData(MockMvcRequestBuilders.get("/articles/category/" + categoryName + "?page=1&count=10"))
|
getMockData(MockMvcRequestBuilders.get("/articles/category/" + categoryName + "?page=1&count=10"))
|
||||||
.andDo(result -> {
|
.andDo(result -> {
|
||||||
Response<PageData<ArticleModel>> response = getResponse(result);
|
Response<PageData<ArticleModel>> response = getResponse(result, ARTICLE_MODEL_PAGE_TYPE);
|
||||||
assertEquals(SUCCESS.getCode(), response.getCode());
|
assertEquals(SUCCESS.getCode(), response.getCode());
|
||||||
PageData<ArticleModel> pageData = response.getResult();
|
PageData<ArticleModel> pageData = response.getResult();
|
||||||
assertNotEquals(0, pageData.getTotal());
|
assertNotEquals(0, pageData.getTotal());
|
||||||
@@ -273,12 +279,12 @@ public class ArticleControllerTest extends BaseTest {
|
|||||||
// 分类不存在
|
// 分类不存在
|
||||||
String tagName = "NoSuchTag";
|
String tagName = "NoSuchTag";
|
||||||
getMockData(MockMvcRequestBuilders.get("/articles/tag/" + tagName + "?page=1&count=10"))
|
getMockData(MockMvcRequestBuilders.get("/articles/tag/" + tagName + "?page=1&count=10"))
|
||||||
.andDo(result -> assertEquals(TAG_NOT_EXIST.getCode(), getResponse(result).getCode()));
|
.andDo(result -> assertEquals(TAG_NOT_EXIST.getCode(), getResponse(result, STRING_TYPE).getCode()));
|
||||||
// 正常查询
|
// 正常查询
|
||||||
tagName = "linux";
|
tagName = "linux";
|
||||||
getMockData(MockMvcRequestBuilders.get("/articles/tag/" + tagName + "?page=1&count=10"))
|
getMockData(MockMvcRequestBuilders.get("/articles/tag/" + tagName + "?page=1&count=10"))
|
||||||
.andDo(result -> {
|
.andDo(result -> {
|
||||||
Response<PageData<ArticleModel>> response = getResponse(result);
|
Response<PageData<ArticleModel>> response = getResponse(result, ARTICLE_MODEL_PAGE_TYPE);
|
||||||
assertEquals(SUCCESS.getCode(), response.getCode());
|
assertEquals(SUCCESS.getCode(), response.getCode());
|
||||||
PageData<ArticleModel> pageData = response.getResult();
|
PageData<ArticleModel> pageData = response.getResult();
|
||||||
assertNotEquals(0, pageData.getTotal());
|
assertNotEquals(0, pageData.getTotal());
|
||||||
|
|||||||
Reference in New Issue
Block a user