넓은 의미
Mock Object는 실제 객체의 행동을 의도한 방향으로 흉내 내도록 설계 된 객체이다. 프로그래머는 일반적으로 다른 어떤 객체의 행동을 테스트하기 위해서 만든다.
(출처 : https://en.wikipedia.org/wiki/Mock_object 번역)
좁은 의미
(Mockito 등 Mock 관련 라이브러리에서 …)
- Mock : 실제 객체의 전체를 mocking한 객체, 기본적으로 Dummy 객체
- Spy : 실제 객체의 일부분만 mocking한 객체, 기본적으로 실제 객체
- Mock과 Spy의 공통점 : Method Stub을 통해 특정 메소드를 대체 할 수 있다.
- Mock과 Spy의 차이점 : Mock은 클래스(또는 인터페이스)를 감싸고, Spy는 인스턴스를 감싼다.