知識庫 / Testing RSS 訂閱

測試 Spring Multipart POST 請求

Spring Web,Testing
HongKong
4
12:53 PM · Dec 06 ,2025

1. 概述

本快速教程將介紹如何使用 MockMvc 測試 multipart POST 請求。

2. Maven 依賴

在開始之前,讓我們在我們的 <em>pom.xml</em> 中添加最新的 JUnit 和 Spring test 依賴:

JUnitSpring test

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.1.16.RELEASE</version>
    <scope>test</scope>
</dependency>

3. 測試多部分 POST 請求

讓我們在我們的 REST 控制器中創建一個簡單的端點:

@PostMapping(path = "/upload")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
    return file.isEmpty() ?
      new ResponseEntity<String>(HttpStatus.NOT_FOUND) : new ResponseEntity<String>(HttpStatus.OK);
}

在這裏,uploadFile方法接受一個multipart POST請求。在該方法中,如果文件存在,我們返回狀態碼200;否則,我們返回狀態碼404。

現在,讓我們使用MockMvc來測試上述方法。

首先,讓我們在單元測試類中注入WebApplicationContext

@Autowired
private WebApplicationContext webApplicationContext;

現在,讓我們編寫一個方法來測試上述定義的 multipart POST 請求:

@Test
public void whenFileUploaded_thenVerifyStatus() 
  throws Exception {
    MockMultipartFile file 
      = new MockMultipartFile(
        "file", 
        "hello.txt", 
        MediaType.TEXT_PLAIN_VALUE, 
        "Hello, World!".getBytes()
      );

    MockMvc mockMvc 
      = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    mockMvc.perform(multipart("/upload").file(file))
      .andExpect(status().isOk());
}

在這裏,我們使用 MockMultipartFile 構造函數定義 hello.txt 文件,然後 我們使用 webApplicationContext 對象定義的 mockMvc 對象進行構建。

我們將使用 MockMvc#perform 方法來調用 REST 端點,並傳入文件對象。最後,我們將檢查狀態碼 200 以驗證我們的測試用例。

4. 結論

在本文中,我們學習瞭如何使用 MockMvc 通過一個示例來測試 Spring Multipart POST 請求。

發佈 評論

Some HTML is okay.