[JUnit] Mock, MockBean / Spy, SpyBean / InjectMocks

June Lee·2022년 2월 10일
0

Test

목록 보기
2/2

Mock: 테스트용 가짜 객체
-> 다른 스프링빈들과 연관관계가 없는 경우. 따라서 굳이 스프링 컨텍스트에 빈으로 띄울 필요도 없음.

MockBean: 스프링 컨텍스트에 빈으로 띄워진 가짜 객체
-> repository와 service를 테스트에서 같이 사용하는데 repository는 가짜(대역) 객체, service는 진짜 스프링 컨텍스트에 있는 객체를 주입해서 사용하는 경우, repository도 가짜 객체로 스프링 컨텍스트에 대신 띄워줘야하기 때문에 사용된다.

Spy: 진짜 객체의 일부 기능만 가짜로 바꾼 객체.
-> Spy 사용은 정말 주의해야한다는 이야기가 많다. 최대한 안쓰도록 하고, 써야하는 상황이라면 SUT(System Under Test = 테스트 대상)의 설정이 잘못되지는 않았는지 검토해봐야한다.

SpyBean: Mock과 MockBean의 관계와 같음

InjectMocks: @Mock이 붙은 객체를 @InjectMocks가 붙은 객체에 주입해주는 것. 스프링 컨텍스트와는 관계없이 이루어지는 작업.



https://cornswrold.tistory.com/369
https://velog.io/@sa833591/Mockito-Mock-MockBean-Spy-SpyBean
https://cobbybb.tistory.com/16#---%--SpringBootTest%--%EB%--%--%--%EB%B-%--%EC%A-%B-%--Refactoring%--%-A%--%--SpyBean

profile
📝 dev wiki

0개의 댓글