首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法完全模拟RestHighLevelClient

无法完全模拟RestHighLevelClient
EN

Stack Overflow用户
提问于 2019-06-11 23:31:12
回答 4查看 5.7K关注 0票数 1

我需要模拟RestHighLevelClient来测试我的代码。基本上,当我调用RestHighLevelClient的"search“方法时,我得到的是UnfinishedStubbingException或WrongTypeOfReturnValue。

代码语言:javascript
复制
PowerMockito.doReturn(searchResponse).when(client.search(searchRequest, RequestOptions.DEFAULT));

此示例抛出UnfinishedStubbingException。

代码语言:javascript
复制
PowerMockito.when(client.search(searchRequest, RequestOptions.DEFAULT)).thenReturn(searchResponse);

此示例抛出WrongTypeOfReturnValue。

这是我的配置

代码语言:javascript
复制
@RunWith(PowerMockRunner.class)
@PrepareForTest(value = {
        RestHighLevelClient.class
...otherClasses
})

我用谷歌搜索了这两个异常,但我没有在"thenReturn“方法中调用"mock.someMethod()”。似乎每种方法都不起作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-10 07:56:09

它是elasticsearch repo中的一个开放的issue。我能做的只有以下几点:

代码语言:javascript
复制
@Mock
private RestHighLevelClient restHighLevelClient;
@Before
public void setup() {
   restHighLevelClient = mock(RestHighLevelClient.class);
}

然后使用它,如下所示

代码语言:javascript
复制
when(elasticClientHandler.createRestClient())
   .thenReturn(restHighLevelClient);
票数 0
EN

Stack Overflow用户

发布于 2020-10-20 00:36:57

嗯,根据comment的说法,最好的解决方案是创建包装委托服务并模拟它,而不是模拟整个RestHighLevelClient的事情(我相信你没有使用所有现有的方法)

票数 0
EN

Stack Overflow用户

发布于 2021-04-20 19:24:04

可以使用PowerMockito模拟RestHighLevelClient。我们可以像下面这样做。

代码语言:javascript
复制
public class ElasticSearchService{

    private RestHighLevelClient client;

}


@RunWith(PowerMockRunner.class)
@PrepareForTest({ ElasticSearchService.class, RestHighLevelClient.class,OtherClasses.. })
public class ElasticSearchServiceTest {
    RestHighLevelClient restHighLevelClient ;

@Before
    public void setup() {
        esInstance = new ElasticSearchService();
       
//Mock client here and set it to the instance of class to be tested
        restHighLevelClient = PowerMockito.mock(RestHighLevelClient.class);
        esInstance.setClient(restHighLevelClient);
}

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56547106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档