어떤 테스트가 다른 객체들을 주입받아서 사용해야 할때, 직접 그 객체들을 일일이 주입받는게 아니라 그 객체처럼 행동하는 가상의 객체를 만들어서 넣어줄 수 있다. 그 가상의 객체를 mock 객체라고 한다. 이걸 이용하면 외부 서비스를 연동하지 않고도 직접 테스트를 진행할 수 있다.
결국 유닛 테스트를 정말 말 그대로 독립적으로 하기 위해 사용하는 테스트임.
https://medium.com/@joohotheman/번역-unittest-by-martin-fowler-2fbba01a782e
백기선님은 이미 만들어진 클래스는 모킹할 필요는 없다고 생각. 하지만 외부 서비스들을 갖다 쓸때는 모킹을 할만하다.
물론 외부라고 해서 다 모킹할 필요는 없고, 해당 외부 서비스가 테스트 환경까지 제공하지 않을때 모킹할만 함.
무엇이 유닛테스트의 하나의 유닛이 될지는 논의될만함… 이건 정해진게 없다.
모키토도 사실 JUnit5처럼 스프링부트 스타터 테스트에 포함되어있다. 만약 이게 없다면 모키토 코어와 JUnit과 모키토를 연동시켜주는 Mockito-Junit-Jupiter 라이브러리를 주입해주면 된다.
모키토는 클래스, 인터페이스의 가짜 객체를 만든다고 생각하면 된다.
구현이 안된 인터페이스, 서비스 등을 mock객체로 만들어 테스트를 진행해볼 수 있다.