使用MockMvc進行單元測試

使用MockMvc進行單元測試

  在前後端分離的項目中,我們經常需要測試接口,除了使用第三方工具或是接口文檔進行測試,我們還可以在測試代碼中使用MockMvc進行單元測試。

首先創建一個被測試的接口

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello(){
        return "Hello World";
    }
}

測試代碼

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class Sbdemo01ApplicationTests {

	@Autowired
	private MockMvc mockMvc;

	@Test
	public void contextLoads() throws Exception{
		mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andExpect(content().string(equalTo("Hello World")));
	}

}

測試通過
在這裏插入圖片描述
其中要使用MockMvc需要添加@AutoConfigurationMockMvc註解

方法淺析:

  • perform:執行一個RequestBuilder請求,會自動執行SpringMVC的流程並映射到相應的控制器執行處理;
  • get:聲明發送一個get請求的方法。MockHttpServletRequestBuilder get(String urlTemplate, Object… urlVariables):根據uri模板和uri變量值得到一個GET請求方式的。另外提供了其他的請求的方法,如:post、put、delete等。
  • param:添加request的參數,如上面發送請求的時候帶上了了pcode = root的參數。假如使用需要發送json數據格式的時將不能使用這種方式,可見後面被@ResponseBody註解參數的解決方法
  • andExpect:添加ResultMatcher驗證規則,驗證控制器執行完成後結果是否正確(對返回的數據進行的判斷);
  • andDo:添加ResultHandler結果處理器,比如調試時打印結果到控制檯(對返回的數據進行的判斷);
  • andReturn:最後返回相應的MvcResult;然後進行自定義驗證/進行下一步的異步處理(對返回的數據進行的判斷);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章