본문 바로가기
스프링 관련/스프링 프레임워크

다이나믹 프록시 (mockito)

by 문자메일 2022. 12. 20.

런타임에 특정 인터페이스 또는 클래스의 프록시 인스턴스 또는 클래스를 만들어 사용하는 프로그래밍 기법

 

주요 사용처

- 스프링 데이터 JPA

- 스프링 AOP

- Mockito

- hibernate lazy initalzation

  - .사용하지 않는 entity는 임시 프록시 객체 만들어놓고, 나중에 실제로 필요할 때 해당 엔티티 가져오는 것

 

 

Mockito

특정 클래스를 테스트 할 때, 해당 클래스를 구성하는 멤버 인스턴스 변수를 초기화해주기 어려울 경우, 대체를 위한 다이나믹 프록시 기술을 활용하여 프록시 객체를 생성하는 기능을 지원함. 

하지만  아래 예시에서 

when(bookRepositoryMock.save(any())).thenReturn(aBook);

항상 "A" Book을 return 하는 .Mock bookRepository를 만들어서 bookService에 주입했기 때문에,

 bookService.rent(book) 에서 "B" book을 전달하였음에도, A가 찍히게 된다

 

댓글