Mock과 Stub

Haechan Kim·2024년 2월 14일
0

Spring

목록 보기
56/68

Test Double

테스트 목적으로 사용되는 실제 객체의 대역

  • dummy : 객체 전달되지만 실제로 사용하지는 x. 매개변수 채우는 역할
  • fake : 실제 작동하는 구현 있지만 실제 프로덕션에 적합하지 않은 지름길 사용.
    ex: 메모리 db
  • stub : 호출에 이미 준비된 답변 제공. 그 이외는 응답 x
  • spy : 어떻게 호출받았는지 일부 정보 기록하는 stub
    ex: 전송된 메시지 수 기록
  • mock : 예상되는 기대값 미리 프로그래밍한 객체

Stub

  • dummy를 이용해 실제 동작하는 것처럼 보이게 만든 객체.
  • 테스트 중 호출에 미리 준비된 답변으로 응답.
  • 테스트 우해 만들어진 것 외에는 응답 x

Mock

  • 호출에 대한 기대 명세하고, 내용에 따라 동작하도록 프로그래밍된 객체
    예성되는 기대값으로 미리 만든 가짜 객체

Mock과 Stub의 차이
stub을 포함한 다른 test double들은 상태 검증을 사용, mock 오브젝트는 행위 검증 사용.

상태 검증 (state varification) : 메소드 수행된 후, 객체 생태 올바르게 동작했는지 확인

// 예제 1
StateClass stateClass = new StateClass();
stateClass.doSomething();

// 객체 상태를 확인
assertThat(stateClass.getStatus()).isEqualTo(true);
// 예제 2
public class SimpleService implements Service {
	
}

행위 검증 (behavior verification) : 메소드의 리턴값을 힐당할 수 없는 경우 특정 동작 수행 가능

// 예제 1
BehaviorClass behaviorClass = new BehaviorClass();

// 특정 동작 결과 확인
verify(behaviorClass).doBehavior();

-> 검증이 대상이 다르다.

Spy

어떻게 호출받았

stub : single fake obj

https://azderica.github.io/00-test-mock-and-stub/

0개의 댓글