참조 : 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);

}

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