Mock

단위, 통합 테스트 등에서 외부 의존성 끊는 등 자주 사용되는 Mock왜 사용하면 안 되는지에 대해서 정리


Why

신뢰도가 떨어짐

given을 통해 코드 **작성자가 의도하고 기대하는대로 테스트 코드**를 짜게 되는데

이때 테스트 코드와는 다르게 실제 구현체(서비스)가 동작할 수 있음

테스트 코드가 깨지기 쉬움

given(testRepository.findById(mockId))
	      .willReturn(Optional.empty())

이처럼 given 메소드로 객체의 행동(상태)를 정의할 때 어떤식으로 동작되는지 알고 작성을 함

이게 위험한 이유는 서비스 코드가 조금이라도 변경이 되면 테스트 코드가 다 깨지게 됨

이해하기 어려움

test를 하기 위해 given 메소드로 상태를 다 정의하고 해야하기 때문에 테스트 코드가 복잡해짐

(실제 구현체를 사용한다면 이러한 불편함이 없음)


대처하기

실제 구현체 사용