[JUnit Test의 목적]
대상 메서드의 예상되는 결과 데이터인 Dto.ResponseDto 객체의 필드 값들과,
대상 메서드로 mock HTTP 요청의 실제 응답 데이터 (ResultActions) 의 필드 값이 일치하는지 검증
Dto.ResponseDto = ResultActions ? JUnit Passed : JUnit no Passed
[JUnit Test 메서드 작성 순서]
1. 대상 메서드의 본연의 기능이 잘 되는지 확인이 주목적.
2. 대상 메서드에서 사용된 모든 객체의 메서드를 사용한다.
3. 설정해둔 예외 발생 조건은 모두 발생하지 않는다는 가정을 전제로 한다.
[JUnit Test 메서드 로직 구성]
1. postBookRentalTest()
목적 : 도서 대여 요청이 잘 되는지
- 로직 구성 -
## 실제 메서드의 로직 흐름대로 객체 생성 ##
#1. 실제 메서드에서 libraryId, bookId, memberId를 파라미터로 전달받음으로 Long 변수 선언.
#2. 실제 메서드와 같은 순서로 도서관 회원 (LibraryMember) 생성 후
libraryMemberService.findByLibrary_IdAndMember_Id 메서드를 given().willReturn() 메서드 사용.
#3. 도서관에서 보유중인 도서 생성 = libraryBook 하고 책의 상태를 AVAILABLE로 설정.
#4. libraryBookService.findLibraryBookByLibraryIdBookId 메서드를 given().willReturn() 메서드로 사용
#5. 새로운 회원 객체 생성 후 memberService.findMember() 메서드를 given().willReturn() 메서드로 사용.
#6. 실제 메서드에서 대여 도서의 숫자를 카운팅하는 메서드를 given().willReturn() 메서드로 사용.
#7. MemberBook 객체 생성 후 필드들을 선언함.
#8. memberBookRepository.save() 메서드를 given().willReturn() 으로 사용.
#9. MemberBookDto.Response 객체 생성 후 필드 set.
#10. memberBookMapper + given().willReturn() 로 MemberBook -> MemberBookDto.Response 변경
#11. 대상 메서드로 요청에 대한 실제 응답 데이터 ResultActions 생성 후 url 설정.
#12. 실제 결과 데이터와 예상되는 response 데이터가 같은지 비교.
2. deleteBookRentalTest()
목적 : 대여중인 도서 반납이 잘 되는지
A. 연체 일수가 없을 경우
B. 연체 일수가 있을 경우
- 로직 구성 -
## 실제 메서드의 로직 흐름대로 객체 생성 ##
#1. 실제 메서드에서 파라미터로 받는 libraryId, bookId, memberId 를 Long 타입 변수로 생성.
#2. A경우 LibraryBook, B경우 LibraryBook 생성 후 libraryBookService 메서드 => given().willReturn()
#3. A경우 MemberBook,B경우 MemberBook 생성 후 memberBookService 메서드 > given().willReturn()
#4. A경우, B경우 LibraryMember 생성 후 libraryMemberService 메서드 -> given().willReturn()
#5. A 경우, B 경우의 MemberBookDto.ReturnResponse 객체 생성 후 필드 선언
#6. memberBookMapper -> given().willReturn() 사용하여 A, B 경우의 response를 선언.
#7. 요청 결과 데이터 ResultActions 를 A, B 경우에 맞춰 2가지로 생성.
3. findBookTest()
목적 : 도서 검색
- 로직 구성 -
## 실제 메서드의 로직 흐름대로 객체 생성 ##
#1. LibraryBook 객체 생성.
#2. libraryBook 객체 상태를 AVAILABLE 로 선언
#3. libraryBookService 메서드를 given().willReturn() 사용하여 전달.
#4. LibraryBookDto.Response 객체 생성하여 필드값 선언.
#5. libraryBookMapper의 메서드를 given().willReturn() 로 전환.
#6. 요청 결과 데이터 ResultActions 생성하고, 실제 결과 값과 LibraryBookDto.Response가 같은지 비교
'프로젝트 일지' 카테고리의 다른 글
#15. Spring RestDocs - GitPage Hosting (0) | 2023.05.19 |
---|---|
#14. 싱글 프로젝트 일지 - JUnit test : Library 도메인 (0) | 2023.05.17 |
#12. 싱글 프로젝트 일지 - JUnit test : Member 도메인 (2) | 2023.05.17 |
#11. Rest Docs & JUnit 테스트 기초 설정 (0) | 2023.05.16 |
#10. 싱글 프로젝트 일지 - MemberBook 도메인 (0) | 2023.05.11 |