我需要模拟RestHighLevelClient来测试我的代码。基本上,当我调用RestHighLevelClient的“搜索”方法时,我会得到UnfinishedStubbingException或WrongTypeOfReturnValue。
PowerMockito.doReturn(searchResponse).when(client.search(searchRequest, RequestOptions.DEFAULT));
本示例引发UnfinishedStubbingException。
PowerMockito.when(client.search(searchRequest, RequestOptions.DEFAULT)).thenReturn(searchResponse);
本示例抛出WrongTypeOfReturnValue。
这是我的配置
@RunWith(PowerMockRunner.class)
@PrepareForTest(value = {
RestHighLevelClient.class
...otherClasses
})
我用谷歌搜索了两个异常,但是我没有在“thenReturn”方法中调用“mock.someMethod()”。似乎每种方法都行不通。
最佳答案
这是Elasticsearch存储库中的开放issue。我所能做的是以下几点:
@Mock
private RestHighLevelClient restHighLevelClient;
@Before
public void setup() {
restHighLevelClient = mock(RestHighLevelClient.class);
}
然后使用它如下
when(elasticClientHandler.createRestClient())
.thenReturn(restHighLevelClient);