gpt4 book ai didi

java - 无法完全模拟 RestHighLevelClient

转载 作者:太空宇宙 更新时间:2023-11-04 09:35:44 26 4
gpt4 key购买 nike

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

最佳答案

将对 RestHighLevelClient 的访问封装在抽象中。使用 RestHighLevelClient 使用的相同签名。最后,模拟抽象。例如:

public interface RestHighLevelClientWrapper {
SearchResponse search(SearchRequest searchRequest, RequestOptions options) throws IOException;
}
@Service
public class RestHighLevelClientWrapperImpl implements RestHighLevelClientWrapper {

private final RestHighLevelClient client;

@Autowired
public RestHighLevelClientWrapperImpl(RestHighLevelClient client) {
this.client = client;
}

@Override
public SearchResponse search(SearchRequest searchRequest, RequestOptions options) throws IOException {
return client.search(searchRequest, options);
}
}

关于java - 无法完全模拟 RestHighLevelClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56547106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com