when().thenReturn 과 doReturn().when()


when().thenReturn 과 doReturn().when()

아무리 봐도 똑같은 메서드인데 왜 두 개나 있을까 싶어서 찾아봤다. when().thenReturn() Strict Mode when.thenReturn은 메서드를 실제 호출하고 mock 객체 리턴 값 반환 그렇기에 메서드 작업이 오래 걸릴 경우 끝날 때까지 기다려야 함 또한 실제 메서드를 호출하기에 해당 메서드에 문제가 생기면 발견할 수 있다. doReturn().when() Lateinit Mode doReturn.when.method는 실제 메서드를 호출하지 않고 mock 객체 리턴 값 반환 실제 메서드를 호출하지 않기에 메서드가 문제가 생겨도 알 수가 없다. 뭘 쓸까? 찾아보니 대부분의 경우 when.thenReturn을 쓰고 이게 가독성이 더 좋다고 한다. 하지만 void형을 test 할 때는 doReturn을 써야 된다. 위와 같은 InterFace가 있고 이 인터페이스의 리턴 값이 void인 Work 메서드를 테스트한다고 해보면 위와 같이 when.then은 컴파일 에러...


#doReturn #doReturnWhen #Mock #Mockito #when #WhenThenReturn

원문링크 : when().thenReturn 과 doReturn().when()