Spring/테스트 7

Service 테스트 - 예외 발생 방법

개념 실패 테스트를 진행하다보면, 특정 예외가 잘 잡아지는지 확인할 필요가 있다. 따라서, 예외를 어떻게 발생시키는지 알아야할 필요가 있다. 테스트 대상 클래스 예외 처리를 할 때, 테스트 대상 클래스에서만 예외 발생 여부를 확인할 때 //엔티티로만 예외 값 검증을 하는 경우 private void checkPermission(Member member, Product product) { if (!(product.isOwner(member) || member.isAdmin())) { throw new BusinessException(INSUFFICIENT_PERMISSION); } } 확인 방법 테스트 대상 메서드를 호출할 때, 잘못된 값을 전달을 하면 됨 //given String name = "상품1"..

Spring/테스트 2024.03.12

Service - 삭제 테스트

개념 특정 객체가 정상적으로 삭제되는지 확인하는 테스트 주의!: 서비스 테스트는 실제 DB에 영향을 주지 않으므로, 리파지토리의 함수의 호출 자체만을 확인해야한다. 성공 테스트 Given 삭제를 진행할 더미 데이터를 정보를 추가한다. 단, 실제 DB에 더미 데이터를 추가하는 것이 아님 (그냥 준비만 하면 됨) // given // 멤버 Member owner = createMember(); Member member2 = Member.of(1000, Status.ACTIVE, "2222", Role.USER); Member member3 = Member.of(1000, Status.ACTIVE, "3333", Role.USER); CustomMemberDetails memberDetails = new Cu..

Spring/테스트 2024.03.12

Service - 생성 테스트

개념 특정 객체가 정상적으로 생성되는지 확인하는 테스트 주의!: 서비스 테스트는 실제 DB에 영향을 주지 않으므로, 리파지토리의 함수의 호출 자체만을 확인해야한다. 성공 테스트 given 생성에 필요한 더미 정보들을 준비한다. ( 메서드의 파라미터 정보들 ) 예시) 상품 등록에 메서드가 상품 등록 정보(dto), 멤버 정보가 필요한 경우 productService.createProduct(dto, memberDetails); @Test void 상품_등록_성공() { // given //멤버 정보 int mileage = 1000; Status status = Status.ACTIVE; String socialId = "1111"; Role role = Role.USER; Member member = M..

Spring/테스트 2024.03.11

Service 테스트

개념 Service 테스트를 진행할 때, Mockito 프레임워크를 활용해서 진행 정의: Junit에서 가짜 객체인 Mock객체를 생성해주고, 관리 및 검증을 지원하는 프레임워크 Mock 정의: 테스트 대상 클래스에서 사용되는 외부 의존성(객체)에 대한 가짜 사용법 의존성 spring-boot-start-test에서 자동으로 Mockito를 추가해줌 testImplementation 'org.springframework.boot:spring-boot-starter-test' 테스트 코드 파일 생성 테스트 코드 파일을 만들고 싶은 Service 파일 열기 해당 service 이름에 마우스 커서를 올리고, 눌러서 클릭 테스트 코드를 생성하고 싶은 메서드를 클릭하고 Ok 버튼을 누르면 테스크 코드 파일이 자동..

Spring/테스트 2024.03.11

Postman 파일 첨부 요청 방법

배경 프로젝트를 진행하다, 이미지 파일들과 Json 요청을 동시에 보내야하는 상황이 발생하였다. 따라서, 해당 API를 테스트하기 위해 Postman에서 파일을 첨부해서 요청을 하는 방법에 대해 정리하였다. 사용 방법 파일 첨부 Body > form-data > KEY 텝에 있는 v 버튼을 눌러 File 클릭 이때, 파일을 여러개 선택하면 하나의 key에 여러개의 파일 첨부 가능 Json 데이터 첨부 파일과 함께 Json 데이터를 첨부해서 요청을 해야한다면, form-data 탭에서 아래와 같이 설정을 해야한다 하나의 key에 json 데이터를 모두 첨부 Content type: applicatoin/json 으로 설정 참고자료 https://whyeskang.com/258 Postman을 이용한 Fil..

Spring/테스트 2024.02.07