0


Springboot项目:使用MockMvc测试get和post接口(含单个和多个请求参数场景)

一、引入MockMvc依赖

使用MockMvc,必须要引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>

二、具体演示

1、GET请求(单个参数)

测试类代码

@ExtendWith(MockitoExtension.class)classAppControllerTest{privateMockMvc mockMvc;@MockprivateIDB2PatrolResultService idb2PatrolResultService;@InjectMocksprivateDB2PatrolResultController db2PatrolResultController;@BeforeEachvoidsetUp(){this.mockMvc =MockMvcBuilders.standaloneSetup(db2PatrolResultController).build();}@TestvoidtestGet()throwsException{this.mockMvc.perform(MockMvcRequestBuilders.get("/dbm/patrolResult/trigger/{itemCode}","121")).andExpect(status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();}}

controller类代码

@GetMapping("/trigger/{itemCode}")publicR<Void>execSchedule(@PathVariable("itemCode")String itemCode){return patrolResultService.execSchedule(itemCode);}

2、GET请求(多个参数)

测试类代码:

@ExtendWith(MockitoExtension.class)classAppControllerTest{privateMockMvc mockMvc;@MockprivateIDB2PatrolResultService idb2PatrolResultService;@InjectMocksprivateDB2PatrolResultController db2PatrolResultController;@BeforeEachvoidsetUp(){this.mockMvc =MockMvcBuilders.standaloneSetup(db2PatrolResultController).build();}@TestvoidtestPatrolResult()throwsException{PatrolQueryConfig patrolQueryConfig =newPatrolQueryConfig();
        patrolQueryConfig.setItemLevel("0");
        patrolQueryConfig.setStatusType("0");String jsonStr =JSONUtil.toJsonStr(patrolQueryConfig);this.mockMvc.perform(MockMvcRequestBuilders.get("/dbm/patrolResult/list").param("itemLevel","1").param("statusType","2")).andExpect(status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();}}

controller类代码

@GetMapping("/list")publicTableDataInfo<PatrolResult>getRunStatsDataAggs(PatrolQueryConfig patrolQueryConfig){List<PatrolResult> patrolResults = patrolResultService.getPatrolHisResultAggs(patrolQueryConfig);returnTableDataInfo.build(patrolResults);}

3、POST请求(多个参数)

测试类代码

@ExtendWith(MockitoExtension.class)classAppControllerTest{privateMockMvc mockMvc;@MockprivateIDB2PatrolResultService idb2PatrolResultService;@InjectMocksprivateDB2PatrolResultController db2PatrolResultController;@BeforeEachvoidsetUp(){this.mockMvc =MockMvcBuilders.standaloneSetup(db2PatrolResultController).build();}@TestvoidtestPost()throwsException{PatrolQueryConfig patrolQueryConfig =newPatrolQueryConfig();
        patrolQueryConfig.setItemLevel("0");
        patrolQueryConfig.setStatusType("0");String jsonStr =JSONUtil.toJsonStr(patrolQueryConfig);this.mockMvc.perform(MockMvcRequestBuilders.post("/dbm/patrolResult/list").contentType(MediaType.APPLICATION_JSON_VALUE).content(jsonStr).header(HttpHeaders.ACCEPT,"application/json")).andExpect(status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();}}

controller类代码

@PostMapping("/list")publicTableDataInfo<PatrolResult>getRunStatsDataAggs(@RequestBodyPatrolQueryConfig patrolQueryConfig){List<PatrolResult> patrolResults = patrolResultService.getPatrolHisResultAggs(patrolQueryConfig);returnTableDataInfo.build(patrolResults);}

三、总结

  • 使用MockMvc可以做到controller层的测试。
  • 在初始化mockMvc的时候: (1)如果想测试单个controller mockMvc = MockMvcBuilders.standaloneSetup(mockMvcController).build(); (2)如果想测试所有controller mockMvc = MockMvcBuilders.webAppContextSetup(context).build();

本文转载自: https://blog.csdn.net/weixin_43860634/article/details/139317968
版权归原作者 飞翔的佩奇 所有, 如有侵权,请联系我们删除。

“Springboot项目:使用MockMvc测试get和post接口(含单个和多个请求参数场景)”的评论:

还没有评论