[Spring] 모의 객체(Mock Object), 주입 모의(Inject Mock)와 의존성 주입

개발log·2024년 5월 4일

Spring

목록 보기
8/16
post-thumbnail

모의 객체(Mock Object)

목적

테스트 중에 실제 객체를 대신하여 사용되는 가짜 객체

  • 특정 조건이나 상황을 시뮬레이션하거나, 의존하는 객체의 행동을 제어하는 데 사용

적용

테스트 중에 실제 객체를 대체하여 사용

  • 실제 시스템의 외부 의존성을 격리하고, 특정 상황을 시뮬레이션하여 테스트하는데 사용

사용방법

테스트 중에 필요한 모의 객체를 생성하고, 특정 동작을 시뮬레이션 하는 방식으로 사용


주입 모의와 의존성 주입

주입 모의(Inject Mock)

목적

모의 객체를 테스트 대상 객체에 주입하는 방식을 가리킴

  • 의존성 주입을 통해 모의 객체를 테스트 대상 객체에 주입하여 테스트를 수행하는 방식

적용

모의 객체를 테스트 대상 객체에 주입하여 테스트를 수행하는 방식

  • 테스트 대상 객체가 모의 객체의 동작에 따라 작동하는지 확인할 수 있다.

사용방법

모의 객체를 테스트 대상 객체에 주입하여 테스트를 수행하는 방식으로 사용

public class ArticleServiceTest {
    @Test
    public void testSaveArticle() {
        // 모의 객체 생성
        BlogService mockBlogService = mock(BlogService.class);
        // 주입 모의
        ArticleService articleService = new ArticleService();
        articleService.setBlogService(mockBlogService);
        
        // Article 객체 생성
        Article article = new Article();
        article.setTitle("Test Title");
        article.setContent("Test Content");
        
        // ArticleService의 saveArticle 메서드 호출
        articleService.saveArticle(article);
        
        // 모의 객체의 save 메서드가 호출되었는지 검증
        verify(mockBlogService).save(article);
    }
  • verify : 모의 객체의 메서드 호출을 검증하는 데 사용
    주로 테스트 메서드의 마지막 부분에서 사용되며, 해당 모의 객체의 특정 메서드가 특정 인수와 함께 호출되었는지를 확인할 수 있다.
// 모의 객체의 save 메서드가 한 번 호출되었는지 검증
verify(mockBlogService, times(1)).save(article);

의존성 주입

객체가 필요로 하는 의존성을 외부에서 주입받는 것

  • 객체 간의 결합도를 줄이고 유연하고 테스트하기 쉬운 코드를 작성하는데 도움이 된다.

모의 객체는 테스트 중에 실제 객체를 대체하여 사용하고, 주입 모의는 모의 객체를 의존성 주입을 통해 테스트 대상 객체에 주입하여 테스트를 수행

profile
나의 개발 저장소

0개의 댓글