-
SpringBoot使用MockMvc测试get和post接口的示例代码
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测试接口的资料请
原文链接:https://blog.csdn.net/weixin_43860634/article/details/139317968
最新更新
java中Base64字符串出现不合法字符的问题解
SpringBoot使用MockMvc测试get和post接口的示例
Spring事件监听器@EventListener与publishEvent的
springboot3.0整合mybatis-flex实现逆向工程的示
SpringBoot使用MyBatis-Flex实现灵活的数据库访
RedisTemplate.opsForHash()用法简介并举例说明
mybatis-flex实现链式操作的示例代码
mybatis-flex实现多数据源操作
MyBatis-Flex实现多表联查(自动映射)
在Spring Boot中处理文件上传功能实现
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比