java / beginner
Snippet
Mocken von Service-Abhängigkeiten in Spring-Unit-Tests
Das Unit-Testen von Spring-Komponenten erfordert die Trennung der Geschäftslogik von externen Systemen wie Datenbanken. Die Verwendung von Mockito mit JUnit 5 ermöglicht das Mocken von Abhängigkeiten über @Mock und deren automatische Injektion in die zu testende Klasse mittels @InjectMocks.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@ExtendWith(MockitoExtension.class)class UserServiceTest {@Mockprivate UserRepository userRepository;@InjectMocksprivate UserService userService;@Testvoid testFindUserById() {when(userRepository.findById(1L)).thenReturn(Optional.of(new User("Alice")));User user = userService.getUser(1L);assertEquals("Alice", user.getName());}}
spring
Erklärung
1
@ExtendWith(MockitoExtension.class)
Initialisiert das Mockito-Framework für das JUnit 5-Testlebenszyklus-Management.
2
@Mock private UserRepository userRepository;
Erstellt eine gemockte Instanz der Repository-Abhängigkeit.
3
@InjectMocks private UserService userService;
Instanziiert den UserService und injiziert die erstellten Mocks hinein.
4
when(userRepository.findById(1L)).thenReturn(Optional.of(new User("Alice")));
Stimmt das Verhalten der gemockten Repository-Methode so ab, dass sie bei ID 1 eine vordefinierte Benutzerinstanz liefert.