EasyMock - Strict Mocks, Switching Order Checking On and Off
createMock()을 사용해서 얻어낸 Mock 객체는 기본적으로 메소드를 호출하는 순서를 확인하지는 않습니다. 그런데 경우에 떄라서는 메소드가 호출되는 순서가 중요할 수 있는데, 그럴 땐는 두 가지 방법이 있습니다.
1. Mock객체를 생성할 때 createMock()이 아니라, createStrickMock()을 호출하여 mock 객체를 생성하면, 순서까지 확인합니다.
MemberDaoMock = createStrickMocek(MemberDao.class);
2. Mock객체에 레코딩을 시작하기 전에, checkOrder(mock 객체, true); 를 사용해서 메소드의 호출 순서도 확인하도록 설정할 수 있습니다.
@Test
public void add() throws Exception {
checkOrder(memberDao, true);
Member member = new Member();
memberDao.add(member);
memberDao.get(member);
replay(memberDao);
memberServiceImpl.add(member);
verify(memberDao);
}
// MemberServiceImpl 코드
public void add(Member member) {
memberDao.get(member);
// ToDo check email
memberDao.add(member);
}
get()으로 먼저 가져와서 확인한 다음에 추가해야 하기 때문에 위의 테스트 코드를 에러가 발생합니다.