...Mockito로 중간 값을 캡쳐하는 방법은 무엇입니까?
// Class Under Test
list.add(1);
dependency.handleList(list);
list.clear();
list.add(2);
dependency.handleList(list);
//Test Code
verify(mockDepenency, times(2)).handleList(argumentCaptor.capture());
List<Collection<Integer>> list = argumentCaptor.getAllValues();
assertEquals(1, list.get(0).get(0)); // fails value is 2
이유는 Mockito 인수를 캡처하는 방식과 관련이있을 것으로 보인다. 즉, 모든 인수를 참조로 캡처합니다. 이것은 this issue과 관련이있는 것으로 보입니다.
이상적으로는 캡처시 복제본/복제본을 지정할 수 있지만 그 방법은 없습니다. 제가 누락 된 대안이 있습니까? 당신이 테스트중인 클래스에 list
를 제공하는 경우
나는 당신이 링크 한 이슈가 당신의 예 (범죄가 아닌)보다 조금 이해하기 쉽다고 생각합니다. 예를 들어'dependency.handList' 호출 사이를 확인할 수는 없습니까? –
@tieTYT : handleList가 내가 테스트하고있는 클래스 (따라서 클래스 사용자 테스트 주석)에서 호출되어서 실제로 테스트하려고하는 클래스에 mockito 또는 juint 호출이 없기 때문에 no입니다. –