Как проверить функцию, возвращающую сложный объект? - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь протестировать функцию в java, которая помогает мне создать запрос типа bool в elasticsearch и возвращает объект QueryBuilder.

public QueryBuilder getBoolQueryForRequest(request) {

    // .. bool query creation logic

    return boolQuery;
}

logi c для создания запроса сложен и, таким образом, задействован объект, который можно утверждать против возвращаемого значения этой функции. Как мне go о моем тестировании?

Эта ссылка говорит о преобразовании QueryBuilder в строковый запрос и последующем сравнении, но, опять же, единственный способ проверить исходный код - это использовать исходный код для создания объекта, что для меня является своего рода уловкой-22 ..

1 Ответ

1 голос
/ 12 июля 2020

IHMO, писать модульные тесты для встроенных запросов Elasti c не имеет смысла. Это точно так же, как если бы вы хотите протестировать запрос JPA не по ответу, возвращенному базой данных, а по тексту запроса. Как убедиться, что он корректен при выполнении в вашей базе данных ElasticSearch, и что он также действителен с точки зрения синтаксиса? . К сожалению, у меня не было возможности настроить это в моих разработчиках Elasti c, над которыми я работал, но вы можете получить некоторые отзывы здесь и из этого сообщения , некоторые идеи:

Используйте инструменты Gradle, которые уже есть в elasticsearch. Вы можете прочитать некоторую информацию об этом здесь: https://github.com/elastic/elasticsearch/issues/21119 620

Используйте плагин Maven: https://github.com/alexcojocaru/elasticsearch-maven-plugin 785

Используйте сценарии Ant, например http://david.pilato.fr/blog/2016/10/18/elasticsearch-real-integration-tests-updated-for-ga

Использование Docker: https://www.testcontainers.org/modules/elasticsearch

Использование Docker из maven: https://github.com/dadoonet/fscrawler/blob/e15dddf72b1ed094dad279d492e4e0314f73683f/pom.xml#L241 -L28992

...