Как имитировать метод поиска репозитория JPA в модульных тестахJAVA

Программисты JAVA общаются здесь
Anonymous
Как имитировать метод поиска репозитория JPA в модульных тестах

Сообщение Anonymous »

Я пытаюсь использовать UT для своего маленького проекта, и у меня возникла проблема.
Мое приложение использует простую многоуровневую архитектуру, и я не могу использовать UT для уровня сервиса.
На самом деле я пытаюсь высмеивать класс CrudRepository из Spring-data.
Я пытаюсь высмеивать метод findAll одного из моих репозиториев, который расширяет этот класс, но Mockito не может высмеивать интерфейс.
Есть есть ли способ сделать это, кроме самого создания компонента и его заполнения?

[Обновление]
Вот код репозитория:

package fr.kaf.interview.Repository;

import fr.kaf.interview.model.Book;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BookRepository extends CrudRepository {
}


Вот UT:

@ExtendWith(MockitoExtension.class)
class BookServiceTest {

@Mock
private BookRepository bookRepository;

@InjectMocks
private BookService bookService;

@Test
public void should_get_All_books_from_database() {
//Given

Person author = new Person();
author.setFirstName("Ka");
author.setLastName("AwQl");

Book firstBook = new Book();
firstBook.setTitle("One Book");
firstBook.setAuthors(singletonList(author));

Book secondBook = new Book();
secondBook.setTitle("Second Book");
secondBook.setAuthors(singletonList(author));

given(bookRepository.findAll()).willReturn(asList(firstBook, secondBook));

//When
List allBooks = bookService.getAllBooks();

//Then
assertThat(allBooks).containsExactly(firstBook, secondBook);

}

}

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