无法完全模拟RestHighLevelClient

问题描述 投票:0回答:1

我需要模拟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()”。似乎每种方法都行不通。

java elasticsearch mockito powermockito
1个回答
0
投票

这是Elasticsearch存储库中的开放issue。我所能做的如下:

@Mock
private RestHighLevelClient restHighLevelClient;
 @Before
public void setup() {
   restHighLevelClient = mock(RestHighLevelClient.class);
}

然后按照以下方式使用它

        when(elasticClientHandler.createRestClient()).thenReturn(restHighLevelClient);
© www.soinside.com 2019 - 2024. All rights reserved.