Java: Как выполнить модульное тестирование метода, который вызывает Elasticsearch? - PullRequest
0 голосов
/ 29 октября 2019

Я очень новичок в модульном тестировании с использованием макетов.

Итак, у меня есть java-метод, который создает поисковый запрос и вызывает erasearch для выполнения поиска. Я не уверен, как тестировать этот метод. В приведенном ниже коде я должен издеваться над "client.search ()"? Я думаю, что не должен, потому что результат client.search () зависит от моего кода (параметры, которые я ему предоставляю). Итак, я не должен высмеивать вывод client.search (), верно?

Как мне продолжить модульное тестирование моего метода? Любые советы будут с благодарностью. Спасибо.

public SearchResponse doV1Search(SearchRequestV1 searchRequestBody) throws IOException {
   Date startDate = Date.from(searchRequestBody.getRange().getStartTime());
   Date endDate = Date.from(searchRequestBody.getRange().getEndTime());
   int size = ELASTICSEARCH_MAX_RECORDS_PER_RESPONSE;
   int from = 0;

   if (searchRequestBody.getMeta() != null) {
     if (searchRequestBody.getMeta().getSize() != null
       && searchRequestBody.getMeta().getSize() != 0
       && searchRequestBody.getMeta().getSize() <= ELASTICSEARCH_MAX_RECORDS_PER_RESPONSE) {
       size = Math.toIntExact(searchRequestBody.getMeta().getSize());
     }
     if (searchRequestBody.getMeta().getFrom() != null) {
       from = Math.toIntExact(searchRequestBody.getMeta().getFrom());
     }
   }

   SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
   searchSourceBuilder.from(from);
   searchSourceBuilder.size(size);
   searchSourceBuilder.sort(new FieldSortBuilder("creationTimestamp").order(SortOrder.DESC));
   searchSourceBuilder.query(
     buildQuery(
       startDate,
       endDate,
       ModelMappings.convertV1SearchRequestFieldsToV3(searchRequestBody.getFields())
     )
   );

   SearchRequest searchRequest = new SearchRequest(buildValidIndicesFromDateRange(startDate, endDate));
   searchRequest.indicesOptions(IndicesOptions.LENIENT_EXPAND_OPEN);
   searchRequest.source(searchSourceBuilder);
   return client.search(searchRequest, RequestOptions.DEFAULT);
 }
...