Easymock 연습하기 2탄에서는 mock 객체를 이용해서 void 형태의 메소드를 테스트 했습니다. 즉 올바른 인자가 들어가는지 확인을 한것입니다.

이번에는 나오는 값도 테스트를 해보겠습니다. 나오는 값을 테스트하기 위해서는 expect라는 메소드와 andReturn메소드를 사용합니다.

소스보기
[#M_ more.. | less.. |
@Test
   public void get(){
       final Member member = new Member();

       mockMemberDao.add(member);
       expect(mockMemberDao.get(1)).andReturn(member);

       replay(mockMemberDao);
       memberRepository.add(member);
       assertEquals(member, memberRepository.get(1));

       verify(mockMemberDao);
   }
_M#]
expect를 이용해서 리턴값이 있는 메소드를 감싸고 그 뒤에 andReturn을 호출하면서 반활 될 타입의 객체를 지정해 줍니다. => "memberDao에 get메소드를 호출하면 member가 나온다."

그리고 replay를 실행하여 실제로 member를 추가한 뒤에 memberRepository를 이용해서 get을 호출하면 memberRepository 안에 있는 memberDao의 Mock 객체가 member를 반환해주게 됩니다. 따라서 시나리오와 액션이 일치하게 되며 verify를 이용해서 확인할 수 있습니다.

1148699871.bmp
위 메소드의 내용을 한번 그려봤습니다. Dao 쪽은 Mock으로 처리하고 Service만 test를 할 수 있게 되었습니다.