Я пытаюсь реализовать UT свой небольшой проект, и у меня возникла проблема.
Мое приложение использует простую многоуровневую архитектуру, и я не могу использовать UT на уровне сервиса.
На самом деле я пытаюсь имитировать класс CrudRepository из Spring-data.
Я пытаюсь имитировать метод findAll одного из моих репозиториев, который расширяет этот класс, но Mockito не может имитировать интерфейс.Есть ли способ сделать это, кроме самого создания компонента и его заполнения?
[Обновление]
Вот код репозитория:< /p>
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);
}
}
Подробнее здесь: https://stackoverflow.com/questions/546 ... unit-tests
Как имитировать метод поиска репозитория JPA в модульных тестах ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение