模拟java elasticsearch RestHighLevelClient

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

我想像这样模拟RestHighLevelClient:

RestHighLevelClient client = mock(RestHighLevelClient.class);
,但是当我这样做时,它说模拟的客户端为空。就像它不恰当地嘲笑一样。所以当我尝试时:

        ActionsSearchRequest request = ActionsSearchRequest.builder()
                .merchSnapshot(merchSnapshot)
                .siteName(SiteName.COM)
                .searchPhrase("skirt")
                .build();
        SearchHit hit1 = new SearchHit(1);
        SearchHit hit2 = new SearchHit(2);

        SearchHits searchHits = new SearchHits(new SearchHit[]{hit1, hit2}, new TotalHits(2, TotalHits.Relation.EQUAL_TO), 1.0f);

        SearchResponse searchResponse = mock(SearchResponse.class);
        when(searchResponse.getHits()).thenReturn(searchHits);
        when(searchResponse.getTotalShards()).thenReturn(1);
        when(searchResponse.getSuccessfulShards()).thenReturn(1);
        when(searchResponse.getFailedShards()).thenReturn(0);
        when(searchResponse.getShardFailures()).thenReturn(null);
        when(searchResponse.isTimedOut()).thenReturn(false);
        when(client.search(any(SearchRequest.class), any(RequestOptions.class))).thenReturn(searchResponse);

我在正在测试的类中的

SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
行上收到 NullPointerException。

java spring-boot elasticsearch mockito powermock
© www.soinside.com 2019 - 2024. All rights reserved.