Când testezi un flux de business complex (de exemplu finalizarea unei comenzi), nu vrei ca testul tău să debiteze carduri reale prin Stripe sau să trimită mesaje SMS. Adnotarea @MockBean creează un mock Mockito și îl injectează direct în ApplicationContext, înlocuind orice bean real de acel tip.
Simetric, @SpyBean permite împachetarea unei instanțe reale existente într-un obiect spion (Spy), permițând urmărirea apelurilor și modificarea selectivă a comportamentului doar pentru anumite metode particulare.
Exemplu: Simulare răspuns serviciu de plăți cu @MockBean
package ro.dexblog.demo.service;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class CheckoutServiceTest {
@Autowired
private CheckoutService checkoutService;
@MockBean
private StripeGateway stripeGateway;
@Test
void shouldCompleteCheckoutWhenPaymentSucceeds() {
when(stripeGateway.charge(100.0)).thenReturn(true);
boolean result = checkoutService.processCheckout("user_1", 100.0);
assertTrue(result);
verify(stripeGateway, times(1)).charge(100.0);
}
}
Întrebări & Exemple de Cod:
@MockBean și @SpyBean în Spring Boot TestAi o nelămurire despre utilizarea comenzii
@MockBean și @SpyBean în Spring Boot Testsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.