🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

테스트코드에서 rollback 적용 안됨

22.12.21 21:04 작성 조회수 591

2

안녕하세요 강의 도중 에러를 해결하지 못해서 질문 남깁니다.

예시 중 이체 중 오류발생 시 롤백하는 테스트를 진행하는데,

throw한 에러를 모두 잡아서 rollback 코드까지는 들어가는데, 결과는 롤백이 안되는 상황입니다.

(memberA가 10000원으로 롤백되어야 하는데 안됨)

 

롤백 코드가 있는 부분은 분명 실행이 된 것이 확인 되는데 막상 결과는 롤백이 되지 않습니다.

 

 

답변 2

·

답변을 작성해보세요.

0

크아앙님의 프로필

크아앙

질문자

2022.12.22

https://drive.google.com/file/d/1ZUpf2qkTbdjnHPOGYmv_bY3Aw2FNFdn4/view?usp=sharing

구글드라이브 링크입니다.

작성한 테스트코드의 MemberServiceV2Test의 이체 중 실패 부분을 실행할 때 롤백이 되지 않는 현상입니다.

 

해당 코드를 그대로 복사해서 사용하는 MebmerServiceV3_1Test 에서는 제대로 진행이 되는 점의 특이합니다.

안녕하세요. 크아앙님

확인해보니 다음 코드가 잘못되어 있었습니다.

MemberServiceV2.bizLogic() 메서드

기존 코드

private void bizLogic(Connection con, String fromId, String toId, int money) throws SQLException {
    Member fromMember = memberRepository.findById(con, fromId);
    Member toMember = memberRepository.findById(con, toId);

    memberRepository.update(fromId, fromMember.getMoney() - money);
    validation(toMember);
    memberRepository.update(toId, toMember.getMoney() + money);
}

변경 코드 - update(con, ...) con을 추가해주세요.

private void bizLogic(Connection con, String fromId, String toId, int money) throws SQLException {
    Member fromMember = memberRepository.findById(con, fromId);
    Member toMember = memberRepository.findById(con, toId);

    memberRepository.update(con, fromId, fromMember.getMoney() - money);
    validation(toMember);
    memberRepository.update(con, toId, toMember.getMoney() + money);
}

감사합니다.

크아앙님의 프로필

크아앙

질문자

2023.01.05

아 감사합니다!

간단한 파라미터가 빠진건데 죽어도 안보인거였군요..

 

0

안녕하세요. 크아앙님

먼저 전체 테이블을 삭제하고 다시 생성해보시겠어요? 그래도 진행이 안된다면

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

추가로 다음 내용도 코멘트 부탁드립니다.

1. 실행 방법을 알려주세요.

2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.

채널톡 아이콘