@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 객체를 주입하고 테스트 클래스의 필드에 할당한다.


연결문서

댓글남기기