[스프링] 스프링 부트 테스트에서의 모의 객체(Mock Object) 사용 방법

스프링 부트 애플리케이션을 테스트할 때 종종 외부 의존성을 갖는 클래스를 모의 객체로 대체합니다. 모의 객체는 외부 의존성을 제어하고, 테스트의 안정성을 확보하는 데 도움이 됩니다. MockitoSpringBootTest를 사용하여 스프링 부트 애플리케이션에서 모의 객체를 생성하고 사용하는 방법에 대해 알아보겠습니다.

1. Mockito 모의 객체 생성

가장 먼저, Mockito를 사용하여 모의 객체를 생성합니다. Mockito는 테스트 더블(Test Double)을 생성하기 위한 자바 라이브러리로, 다른 클래스의 행동을 모방하거나 제어하는 기능을 제공합니다.

다음은 SampleService라는 클래스의 모의 객체를 생성하는 예시입니다.

import org.mockito.Mock;
import org.mockito.Mockito;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SampleServiceTest {

    @Mock
    private SampleService sampleService;

    // 테스트 메서드 작성
}

2. 모의 객체의 동작 지정

모의 객체를 사용하여 메서드의 반환값이나 예외를 지정할 수 있습니다. 예를 들어, 특정한 입력에 대해 모의 객체가 원하는 값이나 예외를 반환하도록 지정할 수 있습니다.

@Test
void testGetUserById() {
    Mockito.when(sampleService.getUserById(1L)).thenReturn(new User(1L, "John"));
}

3. 모의 객체 주입

스프링 부트 테스트에서는 @Autowired를 사용하여 모의 객체를 주입할 수 있습니다. 이때는 @MockBean 어노테이션을 사용합니다.

@SpringBootTest
class SampleControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private SampleService sampleService;

    // 테스트 메서드 작성
}

결론

스프링 부트 애플리케이션을 테스트할 때 Mockito를 사용하여 모의 객체를 생성하고, 모의 객체의 동작을 지정하고 주입하는 방법을 살펴보았습니다. 모의 객체를 사용하여 외부 의존성을 효과적으로 관리하고 테스트의 안정성을 확보할 수 있습니다.


참고 문헌: