使用场景
用于对springboot应用实现集成模块测试。不依赖于web容器。
用法
- 测试的接口:
@Slf4j
@RequestMapping("/test")
@RestController
public class TestController {
@GetMapping("/doService")
public void doService() {
log.info("---------- doService");
}
}
测试用例:
@SpringBootTest
@AutoConfigureMockMvc
public class SpringTest {
@Autowired
MockMvc mockMvc;
@Test
public void doTest() throws Exception {
mockMvc.perform(
MockMvcRequestBuilders.get("/test/doService").accept(MediaType.APPLICATION_JSON) // 设置响应的文本类型
).andExpect(MockMvcResultMatchers.status().isOk()); // 设置响应的状态码
}
}
- 测试的接口:
@PostMapping("/doService2")
public ResultModel<UserVO> doService2(@RequestBody UserVO userVO) {
log.info("---------- doService2");
log.info("传入的参数:{}", userVO);
ResultModel<UserVO> resultModel = new ResultModel<>();
resultModel.setRes(userVO);
return resultModel;
}
测试用例:
@SpringBootTest
@AutoConfigureMockMvc
public class SpringTest {
@Autowired
MockMvc mockMvc;
@Test
public void doTest() throws Exception {
UserVO userVO = new UserVO();
userVO.setUsername("zhangsan");
userVO.setAge(23);
String userVOJson = JSON.toJSONString(userVO);
mockMvc.perform(
MockMvcRequestBuilders.post("/test/doService2")
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.content(userVOJson)
).andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.res.username").value("zhangsan"))
.andExpect(MockMvcResultMatchers.jsonPath("$.res.age").value(23));
}
}
- 测试的接口:
@PostMapping("/doService3/{age}")
public String doService3(@RequestParam String username, @PathVariable Integer age) {
log.info("---------- doService3");
log.info("传入的参数:username = " + username);
log.info("传入的参数:age = " + age);
return "execute success";
}
测试用例:
@Test
public void doTest() throws Exception {
mockMvc.perform(
MockMvcRequestBuilders.post("/test/doService3/{age}", 23)
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.param("username", "zhangsan")
).andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("execute success"));
}
解释
accept方法:接收http协议中的媒体类型
contentType方法:接收http协议中响应类型
content方法:接收请求或者响应中的String字符串类型,如果我们使用@RequestBody传入一个对象,需要使用转为json字符串。
网友评论