Meine Anwendung verwendet eine einfache Layered-Architektur und ich kann nicht zufällig den Dienst Layer UT verwenden.
Tatsächlich versuche ich, die Klasse CrudRepository aus Spring-Data zu verspotten.
Ich versuche, die Methode findAll eines meiner Repositorys zu verspotten, das diese Klasse erweitert, aber Mockito kann Interface nicht verspotten.
Gibt es eine Möglichkeit, dies zu tun? es einfach abgesehen davon, dass ich die Bean selbst erstellt und gefüllt habe?
[Update]
Hier ist der Repository-Code:
Code: Select all
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 {
}
Code: Select all
@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);
}
}
Mobile version