@Mock
@Mock 은 모의, 가짜의 라는 뜻으로 Spring에서는 실제 객체를 만들기엔 비용과 시간이 많이 들거나 의존성이 복잡하여 제대로 구현하기 어려운 경우 사용하는 Annotation이다. Mock은 테스트할 때 필요한 실제 객체와 동일한 모의 객체를 만들어 테스트의 효율성을 높인다.
아래 예제는 Spring SecurityContextHolder의 User 정보를 Mocking하는 예제이다.
@Mock
private SecurityContext securityContext;
@Mock
private Authentication authentication;
@Before
public void setUp() {
// 초기화 모킹 객체
MockitoAnnotations.openMocks(this);
RpaUserDetails rpaUserDetails = new RpaUserDetails.Builder()
.userName("홍길동")
.build();
// SecurityContext에 대한 모킹 설정
when(authentication.getDetails()).thenReturn(rpaUserDetails);
when(securityContext.getAuthentication()).thenReturn(authentication);
SecurityContextHolder.setContext(securityContext);
}
openMocks()는 Mockito 3.4.0 버전부터 도입된 Mock 초기화 메서드로, 현재 클래스의 Mock 객체를 주입하고 테스트 클래스의 필드에 할당한다.
댓글남기기