본문 바로가기

Test Code3

[Spring MVC] @WebMvcTest 에서 Multipart 테스트 하기. 0. 개요 Controller 를 대상으로 단위테스트를 작성해보고자 했는데, 테스트 하고자 했던 API 가 상품 등록 API 였습니다. 상품 등록 시, 필요한 정보는 아래와 같았습니다. 1. 상품명, 상품가격, 재고수량, 상품의 상/하위 카테고리 정보, 상품 설명 2. 상품을 표시할 때 사용할 대표 이미지 1번의 내용만 필요했다면 단순했겠지만, 문제는 2. 상품을 표시할 때 사용할 대표 이미지 입니다. 통상적으로 File 같은 정보가 API 에 Request 에 포함되게 하기 위해선, Content-Type 을 application/json 방식이 아닌 multipart/form-data 방식을 사용해야 합니다. 따라서, 해당 API 를 테스트하기 위해선 multipart/form-data 방식의 요청을.. 2023. 9. 22.
[ATDD] RestAssured를 이용해 multipart/form-data 요청 테스트 시, 한글 깨지는 오류 해결하기 사이드 프로젝트를 하다가 파일 업로드 기능을 개발했다. 파일 업로드의 경우, Request 의 Content-Type 을 multipart/form-data 로 보내도록 했는데, application/json 일 때, 문제가 없었던 한글깨짐 현상이 발생해서 테스트가 실패로 나오는 문제를 겪었다. 해당 문제를 해결한 과정을 적어보려고 한다. 1. 발생한 문제 보통 인수테스트를 작성할 때, 요청의 Content-Type(a.k.a MediaType, 구. Mime Type) 을 application/json 으로 보냈는데, 파일 업로드 기능을 테스트 하기 위해 요청의 Content-Type을 multipart/form-data 로 변경했다. 당연히, 그에 따라 Controller 의 파라미터에도 변화가 생겼.. 2023. 4. 22.
@CsvSource annotation으로 여러 경우의 수 케이스 테스트하기 토이 프로젝트를 하는 동안 간단한 기능을 하나 추가해서 테스트 코드를 작성했다. 테스트 코드를 작성하면서 앞으로 많이 사용해볼 내용을 따로 정리하는 취지의 글입니다. (개인의견, 부족한점, 조언, 충고 등등 많은 채찍을 기다립니다!) 추가한 기능은 "특정 상품리뷰가 특정 사용자가 작성한 것인지 확인" 하는 기능이었다. 상품리뷰를 저장하는 entity 가 있었고, userId 를 parameter로 받아 equals를 하는 아주 간단한 기능이다. @Entity public class ProductReview { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private LocalDateTime writeDate; @Lob.. 2023. 3. 11.