returnBookTest 질문드립니다.
537
작성한 질문수 6
안녕하세요 강사님! 테스트 코드를 작성하던 중 문제가 발생하여 문의드립니다.
returnBookTest 상에서 UserLoanHistory가 DB에만 저장되고(90번째 줄), savedUser.userLoanHistories에는 추가가 안되어 user.returnBook을 호출하는 과정에서 NoSuchElementException이 발생하는 것 같습니다.
@Test
fun returnBookTest() {
// given
bookRepository.save(Book("이상한 나라의 엘리스"))
val savedUser = userRepository.save(User("김", null))
userLoanHistoryRepository.save(UserLoanHistory(savedUser, "이상한 나라의 엘리스", false)) // 생성한 UserLoanHistory 객체가 DB에만 저장됨
val request = BookReturnRequest("김", "이상한 나라의 엘리스")
// when
bookService.returnBook(request) // 최종적으로 user.returnBook 호출
// then
val results = userLoanHistoryRepository.findAll()
assertThat(results).hasSize(1)
assertThat(results[0].isReturn).isTrue
}
public void returnBook(String bookName) {
UserLoanHistory targetHistory = this.userLoanHistories.stream() // userLoanHistories.size() == 0
.filter(history -> history.getBookName().equals(bookName))
.findFirst()
.orElseThrow(); // 여기서 예외 발생
targetHistory.doReturn();
}
따라서 다음과 같이 수정해야 하지 않을까 싶은데 이 부분 확인 부탁드립니다!!
@Test
fun returnBookTest() {
// given
bookRepository.save(Book("이상한 나라의 엘리스"))
userRepository.save(User("김", null))
val loanRequest = BookLoanRequest("김", "이상한 나라의 엘리스")
bookService.loanBook(loanRequest)
val returnRequest = BookReturnRequest("김", "이상한 나라의 엘리스")
// when
bookService.returnBook(returnRequest)
// then
val results = userLoanHistoryRepository.findAll()
assertThat(results).hasSize(1)
assertThat(results[0].isReturn).isTrue
}
답변 2
2
안녕하세요! 돌아온무리뉴님~!!! 크으~~ 너무너무 좋은 질문이십니다 👍👍👍
관련해서 보여드리고 싶은 코드와 내용이 많아, 영상을 촬영해보았는데요!
글로도 간단히 말씀드리자면, 혹시 테스트 코드를 실행시킬 때 @Transactional을 사용하고 있지는 않으신지 확인해보시면 좋을 것 같습니다!! (연관관계가 잘 맺어져 있다는 가정 하에요!!! ㅎㅎㅎㅎ)
말씀해주신 에러는 @Transactional을 테스트 코드에 붙일 경우 나올 수 있거든요!!!
보다 자세한 내용은 아래의 영상을 참조해주시면 감사드리겠습니다~!!!
더 궁금한 점 있으시다면 편하게 질문 남겨주세요!!!
감사합니다~ 편안한 밤 되세요!! 🙏
안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?
0
69
2
실행이 안되네요
0
68
2
프론트 영역 보는법
0
52
2
companion object
0
79
2
Custom 레프직토리 형식
0
60
2
Querydsl 도입
0
68
2
fetch join DISTINCT 중복제거
1
86
2
표준 예외와 커스텀 예외 사용 전략 질문
0
93
3
이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.
1
177
2
테스트를 위한 코드
1
106
2
프로젝트 실행 에러
0
153
2
PDF 문서에 오타가 있어서 알려드립니다.
1
102
1
enum질문
1
87
1
테스트 후 AfterEach 함수에서 나오는 쿼리
0
136
2
테스트 fixture
1
211
2
./gradlew test 실행시 인식할수 없다고 뜹니다.
0
141
1
test 코드 실행시 경고가 발생합니다.
0
143
1
13강 User Kotlin 변환중
2
171
3
'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문
2
174
1
-
0
141
2
4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?
0
314
3
junit import 불가
0
279
3
테스트 코드와 관련하여 질문이 있습니다.
1
219
1
hibernate가 select를 두번 하는 이유
0
240
1





