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

 更新时间:2024年06月24日 11:51:50   作者:飞翔的佩奇  
Spring Boot MockMvc是一个用于单元测试的模块,它是Spring框架的一部分,专注于简化Web应用程序的测试,MockMvc主要用来模拟一个完整的HTTP请求-响应生命周期,本文给大家介绍了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)
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测试接口的资料请关注脚本之家其它相关文章!

相关文章

  • 使用MyBatis进行简单的更新与查询方式

    使用MyBatis进行简单的更新与查询方式

    这篇文章主要介绍了使用MyBatis进行简单的更新与查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • JDBC数据源连接池配置及应用

    JDBC数据源连接池配置及应用

    这篇文章主要介绍JDBC建立数据库连接的两种方式,使用配置数据源的方式连接数据库,效率更高,推荐使用,希望能给大家做一个参考。
    2016-06-06
  • 通俗易懂学习java并发工具类-Semaphore,Exchanger

    通俗易懂学习java并发工具类-Semaphore,Exchanger

    这篇文章主要介绍了java并发工具类-Semaphore,Exchanger,java并发工具类有很多,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编带大家来一起学习一下吧
    2019-06-06
  • SpringBoot使用Aspect切面拦截打印请求参数的示例代码

    SpringBoot使用Aspect切面拦截打印请求参数的示例代码

    这篇文章主要介绍了SpringBoot使用Aspect切面拦截打印请求参数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • 解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题

    解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题

    这篇文章主要介绍了解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringBoot DataSource数据源实现自动配置流程详解

    SpringBoot DataSource数据源实现自动配置流程详解

    这篇文章主要介绍了SpringBoot DataSource数据源实现自动配置流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • 关于MD5算法原理与常用实现方式

    关于MD5算法原理与常用实现方式

    这篇文章主要介绍了关于MD5算法原理与常用实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • this关键字详解

    this关键字详解

    这篇文章主要介绍了this关键字,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java的Spring框架下RMI与quartz的调用方法

    Java的Spring框架下RMI与quartz的调用方法

    这篇文章主要介绍了Java的Spring框架下RMI与quartz的调用方法,Spring是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-11-11
  • Springcloud seata nacos环境搭建过程图解

    Springcloud seata nacos环境搭建过程图解

    这篇文章主要介绍了Springcloud seata nacos环境搭建过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论