我需要模拟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);