mockito 구입 및 인수 값 가져 오기
함수 인수 값을 활용하기 위해 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))
Mockito를 사용하여 페이지 의 수명을 보았습니다 . 불행히도 자바가 작동하지 않는 자체 해석을 얻을 수 없습니다.
편집 (설명을 위해) : Mockito가 인수 X를 배치하여 내 함수를 전달해야합니까? 함수에 전달 된 X의 값 (또는 참조)을 원합니다.
모든 경우를 열거하고 싶지는 다른 쿼리에 대해 다른 결과를 테스트하기 때문에 임의의 인수가 작동하지 않습니다.
Mockito 페이지에는
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
그것은 자바가 아니고 자바로 번역하거나 무슨 일이 일어 났는지 함수로 전달하는 방법을.
저는 Mockito를 사용합니다. 해본 적이 없지만 배우고 싶어요. 나보다 잘 모르는 사람이 대답하면 대답합니다!
Mockito.when(reader.document(anyInt())).thenAnswer(new Answer() {
public Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
Object mock = invocation.getMock();
return document(fakeIndex((int)(Integer)args[0]));
}
});
ArgumentCaptors를 확인하십시오.
http://site.mockito.org/mockito/docs/1.10.19/org/mockito/ArgumentCaptor.html
ArgumentCaptor<Integer> argument = ArgumentCaptor.forClass(Integer.class);
Mockito.when(reader.document(argument.capture())).thenAnswer(
new Answer() {
Object answer(InvocationOnMock invocation) {
return document(argument.getValue());
}
});
ArgumentCaptor와 함께 verify ()를 사용하여 테스트 실행을 보장하고 ArgumentCaptor를 사용하여 인수를 평가할 수 있습니다.
ArgumentCaptor<Document> argument = ArgumentCaptor.forClass(Document.class);
verify(reader).document(argument.capture());
assertEquals(*expected value here*, argument.getValue());
인수의 값은 추가 조작 / 검사 또는 원하는 작업을 위해 argument.getValue ()를 통해 분명히 액세스 할 수 있습니다.
Java 8에서는 다음과 같을 수 있습니다.
Mockito.when(reader.document(anyInt())).thenAnswer(
(InvocationOnMock invocation) -> document(invocation.getArguments()[0]));
나는 그것이 document
지도 라고 가정하고있다 .
참고 URL : https://stackoverflow.com/questions/6631764/mockito-callbacks-and-getting-argument-values
'ProgramingTip' 카테고리의 다른 글
Ubuntu의 Eclipse 창에있는 매우 큰 탭 (0) | 2020.11.03 |
---|---|
일치를 기반으로 열 선택 -dplyr :: select (0) | 2020.11.03 |
데이터베이스에서 h : selectOneMenu 옵션을 채우는 방법은 무엇입니까? (0) | 2020.11.03 |
Coffeescript의 조건부 연산자 (0) | 2020.11.03 |
몇 초 후 MessageBoxClose (0) | 2020.11.03 |