[Test] Mock이란?

🌟 Mock

🎯 Mock이란?

Mock이란 테스트더블의 일종으로 가상객체입니다. 테스트를 위해서 실제 객체를 만드는 것이 어려울때 주로 사용됩니다. 해당 객체를 이용하면 환경구성에 들어가는 시간을 아낄 수 있으며 테스트끼리의 의존성을 낮출 수 있습니다.

🎯 상태 기반 테스트와 행위 기반 테스트

상태기반 테스트는 특정한 메소드를 실행시켜 기대값과의 일치여부로 판단하는 테스트입니다.

행위기반 테스트는 리턴값과는 코드를 실행시켰을때 특정한 동작을 했는지에 따라 판단하는 테스트입니다.

이를테면 A 메소드가 완료상태일때 -> B 메소드 실행 같은 로직이라면 상태기반테스트에서는 A메소드 실행결과값 + B 메소드 실행결과값으로 성공여부를 판단하게됩니다. 반면 행위기반테스트에서는 B메소드 실행여부를 기준으로 성공여부를 판단합니다.

근데 아무래도 상태기반 테스트 예시가 좀 이상하죠? 두 메소드가 실행됐다는 사실만으로는 두 메소드간의 연관성을 입증하기가 애매하니까요. 이런 문제점을 해결하기위해 실제 객체에 쇽샥 붙어서 테스트내에서 특정 객체가 사용되었는지, 혹은 실행되어야하는 메소드가 잘 실행되었는지 확인하는 테스트 스파이 객체를 사용하거나 혹은 앞서 말했던 가상객체 Mock을 사용합니다. (대부분의 경우 기본적으로 검증기능을 제공하는 Mock을 사용한다고 합니다.)

🎯Mock을 사용할때 유의사항

mock을 사용하게 되면 대상의 행위결과도 개발자가 직접 설정해야 합니다. 이때


Written by@이주형
平常心

GitHubFacebook