JUnit5(Java)
public void ์ถฉ์ _ํธ๋์ญ์
์ด_์ฑ๊ณตํ๋ค() {
// Given
ChargeTransactionRequest request = new ChargeTransactionRequest(1L, "orderId", BigDecimal.TEN);
when(transactionRepository.findTransactionByOrderId(request.getOrderId())).thenReturn(Optional.empty());
FindWalletResponse findWalletResponse = new FindWalletResponse(1L, 1L, BigDecimal.ZERO, LocalDateTime.now(), LocalDateTime.now());
when(walletService.findWalletByUserId(1L)).thenReturn(findWalletResponse);
AddBalanceWalletResponse addBalanceWalletResponse = new AddBalanceWalletResponse(
1L, 1L, findWalletResponse.getBalance().add(request.getAmount()), LocalDateTime.now(), LocalDateTime.now());
when(walletService.addBalance(any())).thenReturn(addBalanceWalletResponse);
// When
Wallet createdWallet = transactionService.charge(request);
// Then
verify(transactionRepository, times(1)).save(any());
assertNotNull(createdWallet);
System.out.println(createdWallet);
}
Spock(Groovy)
def "์ถฉ์ ํธ๋์ญ์
์ด ์ฑ๊ณตํ๋ค."() {
given:
ChargeTransactionRequest request = new ChargeTransactionRequest(1L, "orderId", BigDecimal.TEN)
transactionRepository.findTransactionByOrderId(request.orderId()) >> Optional.empty()
def findWalletResponse = new FindWalletResponse(1L, 1L, BigDecimal.ZERO, LocalDateTime.now(), LocalDateTime.now())
walletService.findWalletByUserId(1L) >> findWalletResponse
def addBalanceWalletResponse = new AddBalanceWalletResponse(
1L, 1L, findWalletResponse.balance().add(request.amount()), LocalDateTime.now(), LocalDateTime.now()
)
walletService.addBalance(_) >> addBalanceWalletResponse
when:
def createdWallet = transactionService.charge(request)
then:
1 * transactionRepository.save(_)
createdWallet != null
println createdWallet
}
Spock๊ฐ ์ข ๋ ๊ฐ๋ ์ฑ ์ข์ ๋๋ ~
์์ฃผ ์จ๋ด์ผ๊ฒ ๋ค.