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()으로 먼저 가져와서 확인한 다음에 추가해야 하기 때문에 위의 테스트 코드를 에러가 발생합니다.