함수 인수 값을 캡처하기 위해 Mockito를 얻는 운이 없습니다! 검색 엔진 색인을 조롱하고 색인을 작성하는 대신 해시를 사용하고 있습니다.
// Fake index for solr
Hashmap<Integer,Document> fakeIndex;
// Add a document 666 to the fakeIndex
SolrIndexReader reader = Mockito.mock(SolrIndexReader.class);
// Give the reader access to the fake index
Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666))
쿼리 결과 (즉, 반환하는 문서)를 테스트하기 때문에 임의의 인수를 사용할 수 없습니다. 마찬가지로, 특정 값을 지정하고 각 문서에 대한 행을 갖고 싶지 않습니다!
Mockito.when(reader.document(0)).thenReturn(document(fakeIndex(0))
Mockito.when(reader.document(1)).thenReturn(document(fakeIndex(1))
....
Mockito.when(reader.document(n)).thenReturn(document(fakeIndex(n))
Using Mockito 페이지 의 콜백 섹션을 살펴 보았습니다 . 불행히도 Java가 아니며 Java에서 작동하도록 자체 해석을 얻을 수 없습니다.
편집 (설명을 위해) : Mockito가 인수 X를 캡처하여 내 함수에 전달하도록하려면 어떻게해야합니까? 함수에 전달 된 X의 정확한 값 (또는 참조)을 원합니다.
모든 경우를 열거하고 싶지는 않으며 다른 쿼리에 대해 다른 결과를 테스트하기 때문에 임의의 인수가 작동하지 않습니다.
Mockito 페이지에는
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
그것은 자바가 아니고 자바로 번역하거나 무슨 일이 일어 났는지 함수로 전달하는 방법을 모릅니다.
Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666))
은 모의 객체를 설정해야합니다. 전화하면reader.document(666)
어떻게 되나요?