欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

SpringBoot使用MockMvc测试get和post接口的示例代码,

来源: javaer 分享于  点击 33454 次 点评:273

SpringBoot使用MockMvc测试get和post接口的示例代码,


目录
  • 一、引入MockMvc依赖
  • 二、具体演示
    • 1、GET请求(单个参数)
    • 2、GET请求(多个参数)
    • 3、POST请求(多个参数)
  • 三、总结

    一、引入MockMvc依赖

    使用MockMvc,必须要引入依赖

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

    二、具体演示

    1、GET请求(单个参数)

    测试类代码

    @ExtendWith(MockitoExtension.class)
    class AppControllerTest {
    
        private MockMvc mockMvc;
    
        @Mock
        private IDB2PatrolResultService idb2PatrolResultService;
        @InjectMocks
        private DB2PatrolResultController db2PatrolResultController;
    
        @BeforeEach
        void setUp() {
            this.mockMvc = MockMvcBuilders.standaloneSetup(db2PatrolResultController).build();
        }
    
        @Test
        void testGet() throws Exception {
            this.mockMvc.perform(MockMvcRequestBuilders.get("/dbm/patrolResult/trigger/{itemCode}","121"))
                .andExpect(status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
        }
    }
    

    controller类代码

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

    2、GET请求(多个参数)

    测试类代码:

    @ExtendWith(MockitoExtension.class)
    class AppControllerTest {
    
        private MockMvc mockMvc;
    
        @Mock
        private IDB2PatrolResultService idb2PatrolResultService;
        @InjectMocks
        private DB2PatrolResultController db2PatrolResultController;
    
        @BeforeEach
        void setUp() {
            this.mockMvc = MockMvcBuilders.standaloneSetup(db2PatrolResultController).build();
        }
    
        @Test
        void testPatrolResult() throws Exception {
            PatrolQueryConfig patrolQueryConfig = new PatrolQueryConfig();
            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")
        public TableDataInfo<PatrolResult> getRunStatsDataAggs(PatrolQueryConfig patrolQueryConfig) {
            List<PatrolResult> patrolResults = patrolResultService.getPatrolHisResultAggs(patrolQueryConfig);
            return TableDataInfo.build(patrolResults);
        }
    

    3、POST请求(多个参数)

    测试类代码

    @ExtendWith(MockitoExtension.class)
    class AppControllerTest {
    
        private MockMvc mockMvc;
    
        @Mock
        private IDB2PatrolResultService idb2PatrolResultService;
        @InjectMocks
        private DB2PatrolResultController db2PatrolResultController;
    
        @BeforeEach
        void setUp() {
            this.mockMvc = MockMvcBuilders.standaloneSetup(db2PatrolResultController).build();
        }
    
        @Test
        void testPost() throws Exception {
            PatrolQueryConfig patrolQueryConfig = new PatrolQueryConfig();
            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")
        public TableDataInfo<PatrolResult> getRunStatsDataAggs(@RequestBody PatrolQueryConfig patrolQueryConfig) {
            List<PatrolResult> patrolResults = patrolResultService.getPatrolHisResultAggs(patrolQueryConfig);
            return TableDataInfo.build(patrolResults);
        }
    

    三、总结

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

    以上就是SpringBoot使用MockMvc测试get和post接口的示例代码的详细内容,更多关于SpringBoot MockMvc测试接口的资料请关注3672js教程其它相关文章!

    您可能感兴趣的文章:
    • SpringBoot使用MockMvc进行Web集成测试的示例详解
    • SpringBoot+JUnit5+MockMvc+Mockito单元测试的实现
    • 基于MockMvc进行springboot调试(SpringbootTest)
    • SpringBoot MockMvc单元测试的示例代码
    • spring-mvc/springboot使用MockMvc对controller进行测试
    相关栏目:

    用户点评