참조 : http://www.easymock.org/EasyMock2_2_Documentation.html

reset() 메소드 활용하기

이 전글에서 원래 하나의 테스트 메소드에 넣어뒀던 내용을 세 개의 메소드로 쪼개두었습니다. 의도적으로 쪼갠 것은 아니였고 다만 expect() 메소드를 사용하여 MemberDao의 get() 메소드를 설정해 두었는데 Mock 객체의 특정 메소드를 여러 번 재정의 할 수가 없어서 에러가 발생했습니다.

이럴 때 reset으로 Mock 객체에 녹화 해둔 것들을 싹 지우고 다시 녹화를 할 수 있습니다. 즉 Mock 객체를 재사용할 수 있습니다.



@Test


public void testGetMember() {


       mail = null;


       expect(mockMemberDao.get(mail)).andReturn(null);


       replay(mockMemberDao);


       member = memberService.get(mail);


       assertNull(member);


       verify(mockMemberDao);


 


       reset(mockMemberDao);


 


       mail = “nonExistMail@mail.com”;


       expect(mockMemberDao.get(mail)).andReturn(null);


       replay(mockMemberDao);


       member = memberService.get(mail);


       assertNull(member);


       verify(mockMemberDao);


 


       reset(mockMemberDao);


 


       mail = “existMail@mail.com”;


       Member correctMember = new Member(mail);


       expect(mockMemberDao.get(mail)).andReturn(correctMember);


       replay(mockMemberDao);


       member = memberService.get(mail);


       assertNotNull(member);


       assertEquals(mail, member.getMail());


       verify(mockMemberDao);


}


이렇게 하면 메소드 하나에 여러 행위들을 설정하여 테스트 해볼 수 있습니다.