本测试demo基于Spring框架测试,这几个月也是刚刚接触Spring的项目。如果不同错误的处所请多谅解。
正文1、创建测试类,添加注解
@RunWith(SpringRunner.class)@SpringBootTest
2、 添加本身要测试Controller作为成员变量,同时将我们本身的Mock类添加作为成员变量,目的是通过它来挪用我们的api。我们本身的mock中引用的是MockMvc这个类,在org.springframework.test.web.servlet包下面。
在我们本身封装mock中的结构函数中来启动controller
public MockMvcCore(Object... controllers) {
if (mockMvc == null) {
mockMvc = MockMvcBuilders.standaloneSetup(controllers).build();
}
}
3、编写我们本身的挪用测试要领
1、挪用时候需要MockHttpServletRequestBuilder类,通过它来获取我们的请求方法:put,get,post,delete。直接点的方法就有这些要领,,参数为我们的url地点。
MockMvcRequestBuilders.get(url) 2、MockHttpServletRequestBuilder.params(parameters);这个要领来设置我们的参入的参数,参数为Map类型;此中还有很多的要领,可以进行设置我们的请求内容。
mockHttpServletRequestBuilder.contentType(MediaType.APPLICATION_JSON);
mockHttpServletRequestBuilder.content(requestBody);
3、倡议请求 ResultActions resultActions = mockMvc(就是MockMvc类).perform(mockHttpServletRequestBuilder);
4、拿到请求的功效 MvcResult result = resultActions.andReturn();这个时候就拿到功效了,是整体的功效。
5、最后拿到api相应的返回内容 result.getResponse().getContentAsString();
一般项目中都是要封装起来的以上的过程,是我从项目的封装分析措置惩罚惩罚的也就是没有面向东西的一个挨次。下面就是凭据上面法式的一个测试api要领。
@Test
public void test() throws Exception{
MockMvc m = MockMvcBuilders.standaloneSetup(myController).build();
MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("myUrl");
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
parameters.add("参数字段名","参数字段值");
builder.params(parameters);
ResultActions actions = m.perform(builder);
MvcResult result = actions.andReturn();
String content = result.getResponse().getContentAsString();
}
大抵就这么一个简单过程,封装起来就可以灵活应用了。也是第一次用Mock写测试,还请谅解。
Life is a journey. What we should care about is not where it‘s headed but what we see and how we feel