如何为 OpenSearchClient API 编写 java 单元测试

How to write java unit test for OpenSearchClient APIs

提问人:VinayakC 提问时间:11/16/2023 最后编辑:VinayakC 更新时间:11/16/2023 访问量:25

问:

我正在尝试在 Spring Java 中为 org.opensearch.client.opensearch.OpenSearchClient API(如 msearch、bulk 等)编写 Junit 测试,但我收到编译错误。

被模拟的 API 签名是

public <TDocument> MsearchResponse<TDocument> msearch(MsearchRequest request, Class<TDocument> tDocumentClass)
            throws IOException, OpenSearchException

单元测试模拟方法的例子是;

Mockito.when(client.msearch(ArgumentMatchers.any(), ArgumentMatchers.any()))
            .thenReturn(mSearchResponse);

看到的错误消息如下所示'

msearch(MsearchRequest, Class) 方法对于 键入 OpenSearchClient

任何人都可以指导、分享如何正确模拟和测试 OpenSearchClient API 吗?

Java 单元测试 模拟 mockito OpenSearch

评论

0赞 seenukarthi 11/16/2023
请不要上传代码/数据/错误的图像。相反,请编辑您的问题,以将代码作为格式正确的文本包含在内。
0赞 VinayakC 11/16/2023
除了所需的通用代码和错误信息是图像的一部分外,我确保没有其他内容,但感谢您的链接信息。我为此编辑了我的问题。谢谢@seenukarthi。
0赞 seenukarthi 11/16/2023
感谢您编辑您的帖子。代码/错误作为图像的问题在于它无法被复制,这有助于社区搜索或测试代码或错误。如果您觉得该图像有助于更好地陈述您的问题,请在文本之外添加它。

答:

1赞 VinayakC 11/16/2023 #1

我通过将我的 Mockito when-then 语句更改为下面找到了解决方案;

Mockito.when(client.msearch(ArgumentMatchers.<MsearchRequest>any(), ArgumentMatchers.<Class<Map>>any())).thenReturn(mSearchResponse);

上面的地图是我期望我的响应封闭类型。 如果任何人的类型不同,那么他们可以将其替换为实际的预期类型。 上述问题已为我解决。

干杯,祝您编码愉快!