Как имитировать репозиторий с помощью спецификации Spring Data JPA +JAVA

Программисты JAVA общаются здесь
Anonymous
Как имитировать репозиторий с помощью спецификации Spring Data JPA +

Сообщение Anonymous »

Существует базовый API CRUD, и я хочу протестировать класс UserServiseImpl.java на его уровне обслуживания. В UserServiseImpl сущности извлекаются с помощью

userRepository.findAll(query)

как показано ниже, и я хочу посмеяться над этим.

Код: Выделить всё

public interface UserRepository extends JpaRepository, JpaSpecificationExecutor {
}

Код: Выделить всё

UserSpecification spec = new UserSpecification();
Specification query = Specification.where(spec.userIdEqual(spec.userIdEqual(userId)))
.and(spec.nameContains(target.getName()))
.and(spec.startDateGreaterThanEqual(target.getStartDate()))
.and(spec.endDateLessThanEqual(target.getEndDate()))

List user = userRepository.findAll(query);
Я думал, что смогу высмеять это с помощью @Mock из Mockito следующим образом, но кажется, что экземпляр спецификации (запрос аргумента findAll) не может быть тем же экземпляром, который указан при на самом деле вызывается, в результате чего findAll вызывается с разными аргументами.

Код: Выделить всё

UserSpecification spec = new UserSpecification();
Specification query = Specification.where(spec.userIdEqual("1"))
.and(spec.nameContains("john")
.and(spec.startDateGreaterThanEqual("2024-1-1"))
.and(spec.endDateLessThanEqual("2024-1-2"))

when(userRepository.findAll(query)).thenReturn(userList)
Как мне следует издеваться в случаях, когда Спецификация используется таким образом? Если кто-нибудь знает, буду признателен за ваши советы.


Подробнее здесь: https://stackoverflow.com/questions/784 ... cification

Вернуться в «JAVA»