mock api測試demo

前言

  本測試demo基於Spring框架測試,這幾個月也是剛剛接觸Spring的項目。若是不對的地方請多諒解。web

正文

  一、建立測試類,添加註解spring

    @RunWith(SpringRunner.class)
    @SpringBootTest
 二、 添加本身要測試Controller做爲成員變量,同時將咱們本身的Mock類添加做爲成員變量,目的是經過它來調用咱們的api。咱們本身的mock中引用的是MockMvc這個類,在org.springframework.test.web.servlet包下面。
   在咱們本身封裝mock中的構造函數中來啓動controller
   
   public MockMvcCore(Object... controllers) {
    if (mockMvc == null) {
    mockMvc = MockMvcBuilders.standaloneSetup(controllers).build();
    }
   }
三、編寫咱們本身的調用測試方法
    一、調用時候須要MockHttpServletRequestBuilder類,經過它來獲取咱們的請求方式:put,get,post,delete。直接點的方式就有這些方法,參數爲咱們的url地址。
     MockMvcRequestBuilders.get(url)
    二、MockHttpServletRequestBuilder.params(parameters);這個方法來設置咱們的參入的參數,參數爲Map類型;其中還有不少的方法,能夠進行設置咱們的請求內容。
      mockHttpServletRequestBuilder.contentType(MediaType.APPLICATION_JSON);
      mockHttpServletRequestBuilder.content(requestBody);
    三、發起請求
ResultActions resultActions = mockMvc(就是MockMvc類).perform(mockHttpServletRequestBuilder);

    四、拿到請求的結果 MvcResult result = resultActions.andReturn();這個時候就拿到結果了,是總體的結果。
    五、最後拿到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寫測試,還請諒解。api


        Life is a journey. What we should care about is not where it's headed but what we see and how we feel

相關文章
相關標籤/搜索