mockMvc

1.爲什麼使用mockMvc。
    對模塊進行集成測試時,希望能夠通過輸入url對controller進行測試。如果通過啓動服務器,建立http client進行測試,這樣會使得測試變得很麻煩
(1.啓動速度慢,2.測試驗證不方便,3.依賴網絡環境)
2.測試邏輯
   1、 MockMvcBuilder構造MockMvc的構造器
    2、mockMvc.perform執行一個請求。
    3、MockMvcRequestBuilders.get("XXX")構造一個請求。
    4、ResultActions.param添加請求傳值
    5、ResultActions.accept(MediaType.TEXT_HTML_VALUE))設置返回類型
    6、ResultActions.andExpect添加執行完成後的斷言。
    7、ResultActions.andDo添加一個結果處理器,表示要對結果做點什麼事情
     * 比如此處使用MockMvcResultHandlers.print()輸出整個響應結果信息。
    8、ResultActions.andReturn表示執行完成後返回相應的結果。
3.mockMvcBuilder:
    MockMvc是spring測試下的一個非常好用的類,他們的初始化需要在setUp中進行。
    MockMvcBuilder是用來構造MockMvc的構造器,其主要有兩個實現:StandaloneMockMvcBuilder和DefaultMockMvcBuilder,前者繼承了後者。
    ① MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,將會從該上下文獲取相應的控制器並得到相應的MockMvc;
    ② MockMvcBuilders.standaloneSetup(Object... controllers):通過參數指定一組控制器,這樣就不需要從上下文獲取了,比如this.mockMvc = MockMvcBuilders.standaloneSetup(this.controller).build();
4. MockMvcRequestBuilders
    從名字可以看出,RequestBuilder用來構建請求的
    主要API:
    MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables):根據uri模板和uri變量值得到一個GET請求方式的RequestBuilder,如果在controller的方法中method選擇的是           RequestMethod.GET,那在controllerTest中對應就要使用MockMvcRequestBuilders.get。
    post(String urlTemplate, Object... urlVariables):同get類似,但是是POST方法;
    put(String urlTemplate, Object... urlVariables):同get類似,但是是PUT方法;
    delete(String urlTemplate, Object... urlVariables) :同get類似,但是是DELETE方法;
    options(String urlTemplate, Object... urlVariables):同get類似,但是是OPTIONS方法;
5. ResultActions
    調用MockMvc.perform(RequestBuilder requestBuilder)後將得到ResultActions,對ResultActions有以下三種處理:
    ResultActions.andExpect:添加執行完成後的斷言。添加ResultMatcher驗證規則,驗證控制器執行完成後結果是否正確;
    ResultActions.andDo:添加一個結果處理器,比如此處使用.andDo(MockMvcResultHandlers.print())輸出整個響應結果信息,可以在調試的時候使用。
    ResultActions.andReturn:表示執行完成後返回相應的結果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章