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請求(單個參數(shù))
測試類代碼
@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請求(多個參數(shù))
測試類代碼:
@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請求(多個參數(shù))
測試類代碼
@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);
}
三、總結(jié)
- 使用MockMvc可以做到controller層的測試。
- 在初始化mockMvc的時候:
(1)如果想測試單個controller
mockMvc = MockMvcBuilders.standaloneSetup(mockMvcController).build();
(2)如果想測試所有controller
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
以上就是SpringBoot使用MockMvc測試get和post接口的示例代碼的詳細內(nèi)容,更多關(guān)于SpringBoot MockMvc測試接口的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java使用動態(tài)規(guī)劃算法思想解決背包問題
背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內(nèi),我們?nèi)绾芜x擇,才能使得物品的總價格最高2022-04-04
Java調(diào)用C++動態(tài)庫超詳細步驟講解(附源碼)
C語言因其高效和接近硬件的特性,時常會被用在性能要求較高或者需要直接操作硬件的場合,這篇文章主要介紹了Java調(diào)用C++動態(tài)庫的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-04-04
Java實現(xiàn)CORS跨域請求的實現(xiàn)方法
本篇文章主要介紹了Java實現(xiàn)CORS跨域請求的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
springBoot無法加載application.properties的問題解決
本文介紹了SpringBoot項目中測試類無法讀取application.properties配置文件的問題,詳細記錄了排查過程及解決方案,感興趣的可以了解一下2025-07-07
Spring-cloud Config Server的3種配置方式
這篇文章主要介紹了Spring-cloud Config Server的3種配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

