[java] Mockito를 사용하여 중첩되는 객체의 메소드를 테스트하는 방법은?

Mockito를 사용하여 중첩되는 객체의 메소드를 테스트하는 방법은 다음과 같습니다.

  1. 테스트할 객체의 모의 객체(Mock)를 생성합니다. 모의 객체는 실제 객체의 동작을 모방하고, 원하는 결과를 반환합니다.
    MyClass myClassMock = Mockito.mock(MyClass.class);
    
  2. 중첩된 객체의 모의 객체도 생성합니다.
    NestedClass nestedClassMock = Mockito.mock(NestedClass.class);
    
  3. 중첩된 객체가 소유한 메소드를 호출할 때, 원하는 결과를 반환하도록 설정합니다. 예를 들어, getValue() 메소드를 호출할 때 10을 반환하도록 설정합니다.
    Mockito.when(nestedClassMock.getValue()).thenReturn(10);
    
  4. 테스트할 객체의 중첩된 객체를 모의 객체로 대체합니다.
    Mockito.when(myClassMock.getNestedClass()).thenReturn(nestedClassMock);
    
  5. 테스트할 객체의 메소드를 호출하고, 반환값을 확인합니다.
    int result = myClassMock.someMethod();
    assertEquals(20, result);
    

위 예제에서 someMethod()MyClass의 메소드입니다. 이 메소드 내에서 getNestedClass() 메소드를 호출하고, 반환된 NestedClass 객체의 getValue() 메소드를 호출합니다. 이때 getValue()는 모의 객체로 대체된 nestedClassMock의 동작을 따르며, 설정된 결과값을 반환합니다.

이와 같이 Mockito를 사용하면 중첩된 객체의 메소드를 테스트할 수 있습니다. Mockito 자체적으로 다양한 기능을 제공하므로, 필요에 따라 더 복잡한 테스트 시나리오에 대응할 수도 있습니다.

참고 자료: