我没有任何运气让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))
我看了Using Mockito页面上的回调部分。不幸的是,它不是Java,我无法得到我自己的解释,在Java中工作。
编辑(澄清): 如何获得Mockito捕获参数X并将其传递到我的函数?我想要X的确切值(或参考)传递给函数。
我不想枚举所有情况下,任意参数将无法正常工作,因为我正在测试针对不同查询的不同结果。
该页面的Mockito说
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
这不是java的,我不知道怎么翻译成Java或通过不管发生什么事情到一个函数。
我不确定我完全理解什么是你的失败。你调用'Mockito.when(reader.document(666))。然后返回(document(fakeIndex(666))'应该为你设置模拟对象。当你调用'reader.document(666)'时?' – highlycaffeinated
666可以正常工作,但是我希望能够传入特定数字X并获得fakeIndex(X)的结果。我有大量潜在文档可用于测试查询,并且我不想输入全部 – nflacco