Mock과 Stub을 알기 전에 먼저 Test Double이란 개념을 알아야 한다.
Test Double
테스트 더블이란 액터가 해야 할 행위를 대신하는 스턴트맨처럼 모의 객체를 생성하여 테스트를 진행하는 기술.
상태 검증 vs 행위 검증
상태 검증
: 메서드가 수행될 때 연관되어 있는 협력 객체의 ‘상태’를 검증함으로써 제대로 기능이 동작하고 있는지를 검증하는 것.
행위 검증
: 테스트하고자 하는 메소드가 참조하고 있는 협력 객체의 메소드를 제대로 콜 하는지에 대한 ‘행위’를 검증하는 것.
Mock (행위 검증)
•
특정 동작을 수행하는지(= 메서드를 제대로 call 하는지)에 대한 검증을 한다.
•
행위검증을 추구한다는 점에서 다른 테스트 더블과는 구분되는 점.
Stub (상태 검증)
•
더미 객체를 생성하고 실제로 동작하는것처럼 보이게 만든 가짜 객체이다.
•
호출된 요청에 대한 응답값을 미리 만들어놓고 전달한다.
•
객체의 최소한의 기능만을 임의로 구현한다.