스프링 부트를 활용한 마이크로 서비스 개발이란 책의 39페이지의 내용이다.
이전 장에서 본 @MockBean을 기억하시나요? 이번에는 @Mock 대신 @MockBean을 사용합니다. 스프링이 진짜 빈(MultiplicationServiceImpl)
대신 목 객체를 주입해야 하기 때문입니다. 목 객체는 given()메서드에서 지정한대로 값을 반환합니다.
이 테스트는 컨트롤러만 테스트하는 것이지 서비스를 테스트하는 것은 아닙니다.
@Mock 이나 @MockBean 애너테이션 둘다 목 객체를 만드는 것 아니였나? 단순히 @Mock은 Mockito의 애너테이션이고 @MockBean은 스프링부트에서 래핑해서 지원하는 애너테이션으로 이해하고 있었는데 잘 못 이해 한 것 같다. 아래의 링크에서도 내가 생각했던 방식으로만 언급되어 있는데 다시 유심히 봐야 할 것 같다.
https://code-examples.net/ko/q/2a27310
@Mock대신에 @MockBean을 사용하는 이유를 밝히는데 있어서, 책의 '스프링이 진짜 빈 대신에 목 객체를 주입해야 하기 때문입니다. '가 적절한 해답이라면 혼란스럽긴 하다. 영어 단어 mock이 '목업'과 같은 가짜를 의미하는 단어임에도
@Mock을 사용하는 경우 진짜 객체를 생성하는 것과 연관되어 있기 때문이다.
'TDD' 카테고리의 다른 글
Junit5 에러 DuplicateJsonObjectContextCustomizer (0) | 2020.10.26 |
---|---|
합리적인 테스트 이름만들기 (0) | 2019.09.24 |
댓글