1. 개요

이 빠른 사용방법(예제)에서는 MockMvc 를 사용하여 Spring에서 다중 파트 POST 요청을 테스트하는 방법을 볼 것 입니다.

2. 메이븐 의존성

시작하기 전에 최신 JUnitSpring 테스트 의존성을 pom.xml 에 추가해 보겠습니다 .

<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 컨트롤러에서 간단한 Endpoints을 만들어 보겠습니다.

@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 메서드는 다중 파트 POST 요청을 수락합니다. 이 방법에서는 파일이 있으면 상태 코드 200을 보냅니다. 그렇지 않으면 상태 코드 404를 전송합니다.

이제 MockMvc 를 사용하여 위의 방법을 테스트해 봅시다 .

먼저 단위 테스트 클래스에서 WebApplicationContext 를 자동으로 연결해 보겠습니다.

@Autowired
private WebApplicationContext webApplicationContext;

이제 위에서 정의한 다중 파트 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 Endpoints을 호출 하고 파일 개체에 전달합니다. 마지막으로 테스트 사례를 확인하기 위해 상태 코드 200을 확인합니다.

4. 결론

이 기사에서는 예제의 도움으로 MockMvc 를 사용하여 Spring Multipart POST 요청을 테스트하는 방법을 살펴보았습니다 .

항상 그렇듯이 프로젝트는 GitHub에서 사용할 수 있습니다 .

Generic footer banner