반응형
💋 오늘 공부한 내용
- 일요일에 해야했던 코드리뷰를 방 청소로 미룬 바람에 오늘 했다. 대신 방청소는 기가 막히게 되었다.
- 지난 주부터 작성했던 코드를 모두 머지했다. 이제 조금 찜찜한 이슈들이 남아있긴 하지만, 기능은 모두 완료됨
- 내 인수테스트 작성하다가, 새로 배운게 좀 있다.
- 문제가 된 테스트코드는 아래와 같다
@Test
void 여러_개의_쿠폰이_있는_경우_ACCUMULATING인_쿠폰만_조회된다() {
// given
// TODO: Owner에 대한 회원가입 로직이 생기면 요청으로 대체한다.
Owner gitchan = ownerRepository.save(GITCHAN);
Owner jena = ownerRepository.save(JENA);
Long customerId = 전화번호로_임시_고객_등록_요청하고_아이디_반환(gitchan, TEMPORARY_CUSTOMER_CREATE_REQUEST);
Long gitchanCafeId = 카페_생성_요청하고_아이디_반환(gitchan, gitchan.getId(), CAFE_CREATE_REQUEST);
Long jenaCafeId = 카페_생성_요청하고_아이디_반환(jena, jena.getId(), CAFE_CREATE_REQUEST);
Long gitchanCafeCouponId = 쿠폰_생성_요청하고_아이디_반환(gitchan, new CouponCreateRequest(gitchanCafeId), customerId);
Long jenaCafeCouponId = 쿠폰_생성_요청하고_아이디_반환(jena, new CouponCreateRequest(jenaCafeId), customerId);
accumulateCouponUntilRewarded(gitchanCafeCouponId);
// when
ExtractableResponse<Response> response = 고객의_쿠폰_카페별로_1개씩_조회_요청(gitchan, customerId);
// then
assertAll(
() -> assertThat(response.statusCode()).isEqualTo(HttpStatus.OK.value()),
() -> assertThat(response.jsonPath().getList("coupons")).isNotEmpty(),
() -> assertThat(response.jsonPath().getList("coupons").size()).isEqualTo(1),
() -> assertThat(response.jsonPath().getLong("coupons[0].cafeInfo.id")).isEqualTo(jenaCafeId),
() -> assertThat(response.jsonPath().getLong("coupons[0].couponInfos[0].id")).isEqualTo(jenaCafeCouponId)
);
}
- JPA에서 find를 통해서 받은 프록시 객체가 지연 로딩될 때, 트랜잭션 위에서 + 영속성 컨텍스트의 관리를 받아야만 정상동작함. 이 경우가 아니면 LazyInitializationException을 만날 수 있음. (만남)
- 우리 프로젝트에서도 @Transactional 어노테이션을 붙이지 않아서 계속 에러가 나고 있었다.
- 그.런.데 @Transactional 어노테이션을 붙이는 순간 에러가 발생한다.
- 인수테스트지만, 아직 회원가입 절차가 만들어지지 않아서 repository에 save하는 것으로 대체했다. (대체되었다고 생각했다가 정확할듯)
- 근데, 테스트코드에 @Transactional을 붙이니 owner를 저장했음에도 불구하고 바로 아래의 API 호출에서 owner를 찾을 수 없다는 예외가 발생한다.
- 테스트와 실제 환경이 분리되어 동작하기 때문에 실제 환경을 사용하는 API 호출에서는 테스트 환경에서 사용하는 데이터베이스 내부의 값을 조회할 수 없는거라고 내 어시스턴트가 알려주긴 했는데 흠.. 테스트 환경에 대해서 좀 더 공부를 해봐야할 것 같다...
💋 감정 회고
- 충격적이게도 오늘이 먼가 7월의 마지막 날인 것 같다(?)
- 뭔가 지난 1주 간 급격히 게을러진 것 같은데, 그전에 안 게으르게 살았던 시절이 잘 기억이 안난다. 역시 인간은 최근 2일이 성장했다는 기분에 제일 중요한 것 같다. 긍까 지금 내가 기분이 자체가 값이 음수인 건 아닌데 미분값이 음수라서 뭔가 방향성이 마이너스인 느낌??? 얼릉 벗어나야겠다.
💋 오늘의 포스팅
https://engineerinsight.tistory.com/148
[JPA] 프록시와 지연 로딩
💋 프록시의 등장 배경 아래와 같이 생긴 엔티티가 있다고 생각해보자. (자세히 다 읽을 필요는 없음) @Getter @NoArgsConstructor(access = PROTECTED) @Entity public class Coupon extends BaseDate { @Id @GeneratedValue(strate
engineerinsight.tistory.com
반응형
반응형
'TIL > 2023' 카테고리의 다른 글
[TIL] 23.08.02 (0) | 2023.08.02 |
---|---|
[TIL] 23.08.01 (0) | 2023.08.01 |
[TIL] 23.07.29 (0) | 2023.07.29 |
[TIL] 23.07.28 (0) | 2023.07.28 |
[TIL] 23.07.26 (0) | 2023.07.26 |