Skip to content

juneyr.dev

Mockito when으로 repository save 구현하기

Test, Mockito1 min read

상황

Test를 mockito로 작성하던 도중, repository의 save을 모킹해줄 일이 생겼다.

테스트하려는 메소드의 로직이 respository의 행동을 포함하고 있었기때문인데,

실제로 repository가 들고 있거나 DB에 저장되지 않아도 save 한 것 처럼

넣은 객체를 그대로 받고 싶었다.

일반적인 when - return 으로는 해결되지 않아 스택오버플로우를 참조했다.

해결방법

https://stackoverflow.com/questions/26161917/mockito-returning-the-same-object-as-passed-into-method
mockito에서 메소드에 전달된 오브젝트를 그대로 리턴하는 법 으로 검색했다.

이는 when에서 any object를 넘겨주고, then에서 AdditionalAnswers를 사용하는 방법이다.

실제로 적용한 내용은 아래와 같다.

어떤 User Object가 넘어가든지, 넘어간 args 중 첫번째 args를 리턴하도록 하여 해결했다.

첨언

오랜만에 참조하려다가 실수를 했다. thenReturn 이 아니고 then 이다! 이래야 타입이 맞아서 컴파일이 된다. then으로 해야 Answer 타입으로 반환하는걸로 기대한다.