JDBI тестирует пользовательскую аннотацию для создания оператора SQL - PullRequest
0 голосов
/ 07 мая 2019

Я хочу проверить пользовательскую аннотацию 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);
        }
...