java / beginner
Snippet
Service-Abhängigkeiten in Controller-Tests mit MockBean nachstellen
Beim Testen in Spring Boot erstellt @MockBean ein Mockito-Mock für eine Bean und registriert es im Spring ApplicationContext. Dadurch werden echte externe Dienste (wie Zahlungsanbieter oder Drittanbieter-APIs) während der Testausführung durch vorhersehbares Testverhalten ersetzt.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.boot.test.mock.mockito.MockBean;import static org.junit.jupiter.api.Assertions.assertEquals;import static org.mockito.Mockito.when;@SpringBootTestpublic class OrderServiceTest {@MockBeanprivate PaymentGateway paymentGateway;@Testvoid testSuccessfulPayment() {when(paymentGateway.processPayment(100.0)).thenReturn(true);boolean result = paymentGateway.processPayment(100.0);assertEquals(true, result);}}
spring
Erklärung
1
@MockBean
Registriert eine Mockito-Mock-Instanz im Spring ApplicationContext, um die echte Bean zu ersetzen.
2
when(paymentGateway.processPayment(100.0)).thenReturn(true);
Konfiguriert das Mock-Objekt so, dass es 'true' zurückgibt, wenn processPayment mit 100.0 aufgerufen wird.
3
assertEquals(true, result);
Prüft mit einer Assertion, ob das tatsächliche Ergebnis dem erwarteten Testwert entspricht.