@Test
@DisplayName("계좌 삭제")
void deleteAccount() {
AccountUser user = AccountUser.builder()
.name("Park")
.build();
user.setId(1L);
given(accountUserRepository.findById(anyLong()))
.willReturn(Optional.of(user));
given(accountRepository.findByAccountNumber(anyString()))
.willReturn(Optional.of(Account.builder()
.accountUser(user)
.accountNumber("123456789")
.balance(0L)
.build()));
ArgumentCaptor<Account> captor = ArgumentCaptor.forClass(Account.class);
//when
AccountDto accountDto = accountService.deleteAccount(1L, "123456789");
//then
verify(accountRepository, times(1)).save(any());
assertEquals(1L, accountDto.getId());
assertEquals("123456789", captor.getValue().getAccountNumber());
assertEquals(AccountStatus.UNREGISTERED, captor.getValue().getAccountStatus());
파라미터를 캡처하는데 사용이 되어야 하는데 verify 부분에 파라미터 캡처 하고 있지 않아서 발생한 문제!
ArgumentCaptor<Account> captor = ArgumentCaptor.forClass(Account.class);
verify(accountRepository, times(1)).save(captor.capture());
변경!!!