小编Thi*_* M.的帖子

如何模拟Elasticsearch Java客户端?

你知道如何有效地模拟Elasticsearch Java客户端吗?目前在Java中模拟以下请求:

SearchResponse response = client.prepareSearch(index)
                .setTypes(type)
                .setFrom(0).setSize(MAX_SIZE)
                .execute()
                .actionGet();
SearchHit[] hits = response.getHits().getHits();
Run Code Online (Sandbox Code Playgroud)

我必须嘲笑:

  • client.prepareSearch
  • SearchRequestBuilder:
    • builder.execute
    • builder.setSize
    • builder.setFrom
    • builder.setTypes
  • SearchResponse:
    • action.actionGet
  • SearchResponse:
    • response.getHits
    • searchHits.getHits

所以我的测试看起来像:

SearchHit[] hits = ..........;

SearchHits searchHits = mock(SearchHits.class);
when(searchHits.getHits()).thenReturn(hits);

SearchResponse response = mock(SearchResponse.class);
when(response.getHits()).thenReturn(searchHits);

ListenableActionFuture<SearchResponse> action = mock(ListenableActionFuture.class);
when(action.actionGet()).thenReturn(response);

SearchRequestBuilder builder = mock(SearchRequestBuilder.class);
when(builder.setTypes(anyString())).thenReturn(builder);
when(builder.setFrom(anyInt())).thenReturn(builder);
when(builder.setSize(anyInt())).thenReturn(builder);
when(builder.execute()).thenReturn(action);

when(client.prepareSearch(index)).thenReturn(builder);
Run Code Online (Sandbox Code Playgroud)

丑陋...所以我想知道是否有更"优雅的方式"来模拟这段代码.

谢谢

java unit-testing mocking mockito elasticsearch

11
推荐指数
1
解决办法
8973
查看次数

标签 统计

elasticsearch ×1

java ×1

mocking ×1

mockito ×1

unit-testing ×1