Springboot利用MockMvc调用api

88 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

如何测试Controller对外提供的接⼝

  1. 在测试类中添加注解 @AutoConfigureMockMvc
  2. 注⼊一个MockMvc类

MockMvc相关的几个常用api

perform执⾏行一个RequestBuilder请求

andExpect:添加ResultMatcher->MockMvcResultMatchers验证规则

andReturn:最后返回相应的MvcResult->Response

测试api用例

@RunWith(SpringRunner.class) //底层⽤用junit SpringJUnit4ClassRunner
@SpringBootTest(classes={SpringbootExApplication.class})//启动整个springboot⼯工程
@AutoConfigureMockMvc
public class TestEx {
  @Autowired
  private MockMvc mockMvc;

  @org.junit.Test
  public void testMock() throws Exception {
    MvcResult mvcResult =  mockMvc.perform(MockMvcRequestBuilders.get("/data/api/testConfigByBean"))
            .andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
    int status = mvcResult.getResponse().getStatus();
    System.out.println(status);
    MockHttpServletResponse response = mvcResult.getResponse();
    // 这里需要进行编码格式为utf-8,否则可能会出现乱码
    String result = response.getContentAsString(Charset.forName("utf-8"));
    System.out.println(result);
  }
}

输出的结果

200
{"code":0,"data":{"name":"test","target":"resource/config/testconfig.txt"},"msg":"success!"}

关于/data/api/testConfigByBean这个链接,可以在第五节中找到,这里不再赘述.