Whiteship's Note

Easymock 연습하기 2탄



import static org.easymock.EasyMock.*;
import org.junit.*;
import net.webapp2.member.dao.MemberDao;
import net.webapp2.member.domain.Member;

public class MemberRepositoryTest {

   MemberDao mockMemberDao;
   MemberRepository memberRepository;

   @Before
   public void setup(){
       mockMemberDao = createMock(MemberDao.class);
       memberRepository = new MemberRepositoryImpl();

       memberRepository.setMemberDao(mockMemberDao);

   }

   @Test
   public void add(){
       final Member member = new Member();
       mockMemberDao.add(member);

       replay(mockMemberDao);
       memberRepository.add(member);

       verify(mockMemberDao);
   }
}

먼저 Test할 대상 클래스와 Mock 테스트를 할 클래스 타입의 객체를 만듭니다.(하늘색) 그리고 memberRepository에서 memberDao객체를 사용해야 하기 때문에 setter를 사용하여 위에서 만든 Mock 객체로 setting 해줍니다.(첫번째 분홍색)

그리고 시나리오를 생각해 봅니다.
"Member를 추가하는 기능이기 때문에 memberRepository의 add(Member)를 호출하면 memberDao의 add(Member)가 호출이 되서 DB에 들어가겠구나 리턴값은 없고..."

다음 테스트 메소드를 작성하기 시작하는데 먼저 시나리오에 해당하는 부분(두번째 분홍색 윗부분)에서 Mock 객체(mockMemberDao)에게 일어날 일을 생각합니다. mockMemberDao.add(member); 이것 밖에 없네요.

이제 시나리오 대로 돌아가는지 replay(Mock 객체) 시켜봅니다. replay 시키면서 당연히 "액션"을 취해 줘야 하는데 이 "액션"이 여기서는 memberRepository.add(member) 가 됩니다.

그리고 시나리오 대로 액션이 이뤄졌는지 verify(Mock 객체)를 합니다.

'Spring > 주소록 만들기' 카테고리의 다른 글

HTML 공부 중 2탄  (2) 2006.12.14
Strict HTML 4.01 지침서  (6) 2006.12.14
HTML 공부 중  (2) 2006.12.13
페이징 기능 구현하기(TDD, Easymock, iBATIS, MySQL)  (2) 2006.12.11
Easymock 연습하기 3탄  (0) 2006.12.06
Easymock 연습하기 2탄  (0) 2006.12.05
Easymock 연습하기  (0) 2006.12.05
단위 테스트 모르겠슴 ㅠ.ㅠ  (0) 2006.12.05
Eclipse에서 Rename Method 리팩토링  (0) 2006.12.04
세련된 SQL map (iBATIS)  (0) 2006.12.04
메소드 추상화  (2) 2006.12.04
top

TAG

Write a comment.




: 1 : ··· : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : ··· : 46 :