Я хочу проверить пользовательскую аннотацию SqlStatementCustomizingAnnotation в пакете jdbi.
http://jdbi.org/#_statement_customizing_annotations
У меня есть следующий модульный тест, но я вижу, что возвращаемый объект «настройщика» является лямбда-выражением. Как мне утверждать, что SQL, который я хотел генерировать в пользовательской аннотации, - это то, что я ожидаю. Как преобразовать объект «настройщик» в оператор SQL или проверить и утвердить sql в объекте «настройщик».
SourceEventTimeCustomizerTest
@Test
public void testSourceModifiedQuery(){
SourceModifiedQuery.SourceEventDateTimeCustomizer srcModifiedQuery = new SourceModifiedQuery.SourceEventDateTimeCustomizer();
Annotation annotation = buildSourceModifiedQueryAnnotation();
List<Query> queries = new ArrayList<Query>();
queries.add(QueryHelper.createQuery("source_modified_date_time" , Query.Operator.EQ, "2018-01-01"));
SqlStatementCustomizer customizer = srcModifiedQuery.createForParameter(annotation, DealDao.class, null, queries );
assertNotNull(customizer);
}
SourceEventTimeCustomizer
@Override
public SqlStatementCustomizer createForParameter(final Annotation annotation, final Class sqlObjectType,
final Method method, final Object arg) {
final List<Query> queries = (List<Query>) arg;
final SourceModifiedQuery sourceModifiedQuery = (SourceModifiedQuery) annotation;
final String actualQuery = genQuery(queries, sourceModifiedQuery);
return sqlStatement -> sqlStatement.define(sourceModifiedQuery.value(), actualQuery);
}