[java] Mockito를 사용하여 중첩되는 객체의 메소드를 테스트하는 방법은?
Mockito를 사용하여 중첩되는 객체의 메소드를 테스트하는 방법은 다음과 같습니다.
- 테스트할 객체의 모의 객체(Mock)를 생성합니다. 모의 객체는 실제 객체의 동작을 모방하고, 원하는 결과를 반환합니다.
MyClass myClassMock = Mockito.mock(MyClass.class);
- 중첩된 객체의 모의 객체도 생성합니다.
NestedClass nestedClassMock = Mockito.mock(NestedClass.class);
- 중첩된 객체가 소유한 메소드를 호출할 때, 원하는 결과를 반환하도록 설정합니다. 예를 들어,
getValue()
메소드를 호출할 때 10을 반환하도록 설정합니다.Mockito.when(nestedClassMock.getValue()).thenReturn(10);
- 테스트할 객체의 중첩된 객체를 모의 객체로 대체합니다.
Mockito.when(myClassMock.getNestedClass()).thenReturn(nestedClassMock);
- 테스트할 객체의 메소드를 호출하고, 반환값을 확인합니다.
int result = myClassMock.someMethod(); assertEquals(20, result);
위 예제에서 someMethod()
는 MyClass
의 메소드입니다. 이 메소드 내에서 getNestedClass()
메소드를 호출하고, 반환된 NestedClass
객체의 getValue()
메소드를 호출합니다. 이때 getValue()
는 모의 객체로 대체된 nestedClassMock
의 동작을 따르며, 설정된 결과값을 반환합니다.
이와 같이 Mockito를 사용하면 중첩된 객체의 메소드를 테스트할 수 있습니다. Mockito 자체적으로 다양한 기능을 제공하므로, 필요에 따라 더 복잡한 테스트 시나리오에 대응할 수도 있습니다.
참고 자료:
- Mockito 공식 문서: https://site.mockito.org/
- Mockito GitHub 저장소: https://github.com/mockito/mockito