본문 바로가기
TDD

@Mock와 @MockBean의 차이점? 아직 잘 모르겠다.

by fabxoe 2019. 10. 14.

 

스프링 부트를 활용한 마이크로 서비스 개발이란 책의 39페이지의 내용이다.

이전 장에서 본 @MockBean을 기억하시나요? 이번에는 @Mock 대신 @MockBean을 사용합니다. 스프링이 진짜 빈(MultiplicationServiceImpl)
대신 목 객체를 주입해야 하기 때문입니다. 목 객체는 given()메서드에서 지정한대로 값을 반환합니다.
이 테스트는 컨트롤러만 테스트하는 것이지 서비스를 테스트하는 것은 아닙니다.

@Mock 이나 @MockBean 애너테이션 둘다 목 객체를 만드는 것 아니였나? 단순히 @Mock은 Mockito의 애너테이션이고 @MockBean은 스프링부트에서 래핑해서 지원하는 애너테이션으로 이해하고 있었는데 잘 못 이해 한 것 같다. 아래의 링크에서도 내가 생각했던 방식으로만 언급되어 있는데 다시 유심히 봐야 할 것 같다.

https://code-examples.net/ko/q/2a27310

 

java willreturn @Mock, @MockBean 및 Mockito.mock()의 차이점

테스트를 만들고 조롱 의존성을 만들 때이 세 가지 방법의 차이점은 무엇입니까? @MockBean:@MockBean MyService myservice; @모조품: @Mock MyService myservice; Mockito.mock() MyService myservice=Mockito.mock(MyService.class);

code-examples.net

 

 

@Mock대신에 @MockBean을 사용하는 이유를 밝히는데 있어서, 책의 '스프링이 진짜 빈 대신에 목 객체를 주입해야 하기 때문입니다. '가 적절한 해답이라면 혼란스럽긴 하다. 영어 단어 mock이 '목업'과 같은 가짜를 의미하는 단어임에도

@Mock을 사용하는 경우 진짜 객체를 생성하는 것과 연관되어 있기 때문이다. 

 

 

'TDD' 카테고리의 다른 글

Junit5 에러 DuplicateJsonObjectContextCustomizer  (0) 2020.10.26
합리적인 테스트 이름만들기  (0) 2019.09.24

댓글