Я пытаюсь настроить модульный тест для метода приложения Spring Boot, использующего библиотеку Querydsl (Mysema).Тестируемый метод включает следующие строки кода:
JPAQueryFactory queryFactory = new JPAQueryFactory(em);
QEntity q = QEntity.entity;
long count = queryFactory.from(q)
.select(q.anInteger)
.where(aBooleanExpression)
.fetchCount();
В классе модульного теста я пишу метод настройки, помеченный @ Before , где я делаю следующее:
JPAQueryFactory queryFactory = Mockito.mock(JPAQueryFactory.class, Mockito.RETURNS_DEEP_STUBS);
QEntity q = QEntity.etity;
BooleanExpression aBooleanExpression = ... // The same as used in the method under test
Mockito
.when(((JPAQuery<Integer>) queryFactory
.from(q)
.select(q.anInteger))
.where(aBooleanExpression)
.fetchCount()
).thenReturn(1L);
Нет ошибок компиляции, но когда я запускаю тест, я получаю исключение:
java.lang.ClassCastException: com.querydsl.core.support.QueryBase$$EnhancerByMockitoWithCGLIB$$6824f47d cannot be cast to com.querydsl.jpa.impl.JPAQuery
Я не знаю, каким образом я должен рефрактировать предыдущий код, чтобы сделатьэто работает.