1. 개요
이 빠른 사용방법(예제)에서는 MockMvc 를 사용하여 Spring에서 다중 파트 POST 요청을 테스트하는 방법을 볼 것 입니다.
2. 메이븐 의존성
시작하기 전에 최신 JUnit 및 Spring 테스트 의존성을 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에서 사용할 수 있습니다 .