EasyMock을 사용한 Service 계층 테스트2
참조 : 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);
}
이렇게 하면 메소드 하나에 여러 행위들을 설정하여 테스트 해볼 수 있습니다.