springBoot單元測試案例

解釋說明:

    1. Spring測試框架提供MockMvc對象,可以在不需要客戶端-服務端請求的情況下進行MVC測試,完全在服務端這邊就可以執行Controller的請求,跟啓動了測試服務器一樣。

    2.perform(get(...))建立web請求。在我們的第三個用例中,通過MockMvcRequestBuilder執行GET請求。

andExpect(...)可以在perform(...)函數調用後多次調用,表示對多個條件的判斷,這個函數的參數類型是ResultMatcher接口,在MockMvcResultMatchers這這個類中提供了很多返回ResultMatcher接口的工具函數。這個函數使得可以檢測同一個web請求的多個方面,包括HTTP響應狀態碼(response status),響應的內容類型(content type),會話中存放的值,檢驗重定向、model或者header的內容等等。

代碼如下:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Train01Application.class)
@WebAppConfiguration
public class Train01ApplicationTests {
   @Autowired
   private WebApplicationContext context;

   private MockMvc mockMvc;

   private ObjectMapper mapper=new ObjectMapper();
   @Before
   public void setupMockMvc() throws Exception{
      mockMvc= MockMvcBuilders.webAppContextSetup(context).build();
   }

   @Test
   public void testSelect() throws Exception {
      mockMvc.perform(MockMvcRequestBuilders.post("/customer/list")
            .contentType(MediaType.APPLICATION_JSON_UTF8)
              .content("{   \"ciname\":\"\",\"cisex\":2,\"ciareacode\":\"310107\",\"ciofficename\":\"\" }"))
              .andExpect(MockMvcResultMatchers.status().isOk())
              .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8))
              .andDo(MockMvcResultHandlers.print());
   }
   @Test
   public void testAdd() throws Exception {
      mockMvc.perform(MockMvcRequestBuilders.post("/customer/add")
            .contentType(MediaType.APPLICATION_JSON_UTF8)
            .content("{\n" +
                  "       \"ciname\":\"李四\",       \n" +
                  "       \"citelephone\":\"112121212\",   \n" +
                  "       \"cisex\":0,        \n" +
                  "       \"cibirthday\":\"19940808\",  \n" +
                  "       \"cizipcode\":\"14000\",    \n" +
                  "       \"cifax\":\"asfgafas\",    \n" +
                  "       \"ciofficename\":\"上海翰都1\",     \n" +
                  "       \"ciareafullname\":\"上海市-市轄區-普陀區\",    \n" +
                  "       \"ciaddress\":\"零陵路\",       \n" +
                  "       \"cipassword\":\"123\",     \n" +
                  "       \"ciremark\":\"新增客戶功能測試5\"       \n" +
                  "}"))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8))
            .andDo(MockMvcResultHandlers.print());
   }
   @Test
   public void testUpdate() throws Exception {
      mockMvc.perform(MockMvcRequestBuilders.post("/customer/update")
            .contentType(MediaType.APPLICATION_JSON_UTF8)
            .content("{\n" +
                  "\t   \"ciid\":65,\n" +
                  "       \"ciname\":\"王五\",       \n" +
                  "       \"citelephone\":\"112121212\",   \n" +
                  "       \"cisex\":0,        \n" +
                  "       \"cibirthday\":\"19940808\",  \n" +
                  "       \"cizipcode\":\"14000\",    \n" +
                  "       \"cifax\":\"asfgafas\",    \n" +
                  "       \"ciofficename\":\"上海翰都1\",     \n" +
                  "       \"ciareafullname\":\"上海市-市轄區-普陀區\",    \n" +
                  "       \"ciaddress\":\"零陵路\",       \n" +
                  "       \"cipassword\":\"123\",     \n" +
                  "       \"ciremark\":\"新增客戶功能單元第6次測試\"       \n" +
                  "}"))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8))
            .andDo(MockMvcResultHandlers.print());
   }

}

發佈了25 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章