전체 글42 BigDecimal의 compareTo 메서드 파헤치기 계좌의 잔고를 BigDecimal이라는 자료형을 사용하고 있다.BigDecimal 자료형을 가진 값들을 비교하기위해 BigDeciamal class에 내장되어 있는 compareTo 메서드를 사용하고 있다. 정확한 동작 원리를 파헤쳐보자BigDecimal은 다음과 같이 Comparable Interface를 구현하고 있다. Comparable interface에는 compareTo라는 인터페이스 메소드가 존재한다.BigDecimal에서 compareTo라는 인터페이스 메소드를 구현하는 구조이다. @Override를 해서 compareTo 메서드를 구현해주고 있다. 코드를 좀 살펴보자intCompat은 자기 자신을 가리키고, val은 비교하고자 하는 값을 가리킨다. 비교에 따라 다른 return 값을 부.. 2024. 7. 17. TransferService 테스트시 NotEnoughException이 터지지 않는 문제 📌 Payment를 구현하는 프로젝트에서 생긴 문제Test코드는 다음과 같다.@Test@DisplayName("A계좌에 돈이 충분하지 않아 A계좌에서 B계좌로 이체를 실패한다")void A계좌에_돈이_충분하지_않아_A계좌에서_B계좌로_이체를_실패한다() throws Exception { //given final String withdrawalAccountNumber = "0123456789"; final String depositAccountNumber = "123456789"; final BigDecimal transferAmount = BigDecimal.valueOf(10000); final String accountNumber = "1234"; final Tran.. 2024. 7. 17. 💥 org.mockito.exceptions.misusing.PotentialStubbingProblem: Strict stubbing argument mismatch. ServiceTest코드를 작성한 후, 테스트를 수행하는 도중에 다음과 같은 에러가 발생했다. 코드의 오류 메시지는 다음과 같다.Strict stubbing argument mismatch. Please check:- this invocation of 'save' method : transferHistoryRepository.save(...); 💻 메시지의 뜻은 아규먼트가 일치하지 않는다는 것이다. 목킹할 때 save에 넘겨준 아규먼트와 실제로 save를 호출하면서 넘겨준 transferHistory이 일치하지 않으면서 발생하는 에러이다. 주소값을 보면, TransferHistory@2babf189과 TransferHistory@69e05f61 일치하지 않는 것을 볼 수 있다. Q. 왜 일치하지 않을까.. 2024. 7. 17. 🔎 SoftAssertions의 각 Assertions는 독립적인가? SoftAssertions 공식문서에서는 SoftAssertions에 대해 다음과 같이 이야기한다.Suppose we have a test case and in it we'd like to make numerous assertions. In this case, we're hosting a dinner party and we want to ensure not only that all our guests survive but also that nothing in the mansion has been unduly disturbed 비유적인 표현으로 명시되었지만, 개인적으로 다음과 같이 해석했다."각 Assertions가 독립적으로 서로 영향을 주지 않는다" 정말 Assertions가 독립적으로 서로 영향을 주.. 2024. 7. 16. @NoArgsConstructor(access = AccessLevel.PROTECTED)를 사용하는 이유 우선 @Entity 코드를 먼저 봐보자.@Entity@NoArgsConstructor(access = AccessLevel.PROTECTED)public class TransferHistory extends BaseEntity { @Id @GeneratedValue private Long id; @Column(length = 10) private String withdrawalAccountNumber; @Column(length = 10) private String depositAccountNumber; private BigDecimal transferAmount; private BigDecimal amountAfterWithdrawal; privat.. 2024. 7. 15. [Payment] 💸당행 이체 구현해보기 📌 사전 용어 익히기이체 : 한 계좌에서 다른 계좌로 자금을 이동시키는 금융거래당행 : 현재 거래하고 있는 은행당행 이체 : 같은 은행 내의 계좌 간 자금 이동 📌 당행 이체 기능 흐름 생각해보기당행 이체는 어떤 흐름을 갖고 기능이 동작할지 생각해보자A계좌, B계좌가 존재하는 상황을 가정하고 생각해보자 상황 : A계좌에서 B계좌로 10,000원을 이체 🔨 Flow(1) A계좌에서 보낸돈 10,000원을 출금 (계좌 잔액 - 10,000원)(2) A계좌 출금 내역 기록(3) B계좌에 A계좌에서 보낸돈 10,000원을 입금 (계좌 잔액 + 10,000원)(4) B계좌 입금 내역 기록 2개의 큰 흐름이 존재한다고 생각한다.(1), (2)번은 반드시 하나의 작업 단위로 이루어져야 한다. Q. 왜 하나.. 2024. 7. 15. 이전 1 2 3 4 5 다음