पाठ 31 / 38
Mockito मूल बातें
जाँची जा रही क्लास को उसके असली सहयोगियों की जगह Mockito मॉक से बदलकर अलग करें, when/thenReturn से व्यवहार stub करें, और इंटरैक्शन verify करें।
एक dependency stub करें
mock(Type.class) बिना असली व्यवहार वाला नक़ली implementation बनाता है; when(...).thenReturn(...) किसी कॉल के लिए यह तय करता है कि क्या लौटाया जाए। जाँची जा रही क्लास असली रहती है — केवल उसकी dependency नक़ली होती है।
@Test
void appliesDiscountFromRepo() {
DiscountRepository repo = mock(DiscountRepository.class);
when(repo.findByCode("SAVE10")).thenReturn(Optional.of(new Discount(10)));
PriceService svc = new PriceService(repo);
assertEquals(90, svc.total(100, "SAVE10"));
}verify व आर्ग्युमेंट matcher
verify(mock).method(args) पुष्टि करता है कि कोई इंटरैक्शन वाक़ई हुआ — तब ज़रूरी जब जाँची जा रही मेथड void लौटाए और उसका पूरा प्रभाव किसी सहयोगी को कॉल करना हो। any(), eq() जैसे matcher सटीक मान मायने न रखने पर उपयोग होते हैं।
@Test
void sendsReceiptOnPlaceOrder() {
EmailSender sender = mock(EmailSender.class);
OrderService svc = new OrderService(sender);
svc.place(new Order("A1", 3));
verify(sender).send(eq("A1"), anyString());
}