그럼 지금까지 만든 코드는 어떻게 동작하나?

→ 테스트 코드로 확인하기가 쉽지 않다

장애가 발생했을 때 일어나는 현상 중의 하나인 예외가 던져지는 상황을 의도적으로 만들어보자

테스트용 UserService 대역

try1. 예외를 강제로 발생시키는 애플리케이션 코드 수정

현재 테스트용 사용자 정보 중 두번째와 네번째 → 업그레이드 대상 1. 네번째 사용자 처리 중 예외 발생 2. 두번째 사용자 정보가 취소되었는지, 그대로 남았는지 확인하자.

UserService 를 상속한 클래스

upgradeLevel() 메서드

UserService 의 테스트용 대역 클래스

  static class TestUserService extends UserService{
    private String id;
    
    private TestUserService(String id){
      this.id = id;
    }
    
    protected void upgradeLevel(User user){
      if (user.getId().equals(this.iid)) throw new TestUserServiceException();
      super.upgradeLevels(user);
    }
  }