前言
本測試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寫測試,還請諒解。