진짜 객체 대신 가짜 객체를 만들어서 사용하는 것
즉, 테스트를 쉽게 하기 위해 만드는 가짜 객체이다.
“service야. 너 진짜로 동작하지 말고,
내가 원하는 값만 반환해 주면 돼.”
테스트는 작고, 빠르고, 독립적이어야 한다. 그런데 문제가 있다.
위의 해결책이 바로 가짜 객체를 써서 테스트를 하는 것
빠른 테스트
Mock은 코드만 돌아가므로 빠르고 안정적이다.
파일 I/O, DB 연결 등을 실제로 하면 느리고, 환경에 따라 실패할 수 있다.
테스트 대상에 집중할 수 있음
어떤 대상이 출력/흐름을 잘 처리하는지 테스트 하고싶은데
계층과 DB 등등이 모두 엮이면 어느 계층에서 잘못된 것인지 알 수 없다.
Mock은 의존성 격리를 해줘서 원하는 대상에만 테스트를 할 수 있다.
예외 상황을 만들기 쉽다
함수이름은 스네이크케이스와 카멜케이스를 섞어서
given(상황)_when(행동)_then(기대결과) 식으로 쓴다.