सावधान रहें कि Mockito.when (ऑब्जेक्ट) को हमेशा स्टबिंग के लिए अनुशंसित किया जाता है क्योंकि यह तर्क प्रकार-सुरक्षित और अधिक पठनीय है (विशेषकर जब लगातार कॉल को ठोकर मारता है)।
यहां उन दुर्लभ मौकों को दिखाया गया है जब doReturn () काम आता है:
1. जब वास्तविक वस्तुओं की जासूसी और जासूसी पर वास्तविक तरीकों को कॉल करने से दुष्प्रभाव होता है
List list = new LinkedList(); List spy = spy(list);
// असंभव: वास्तविक विधि को स्पाईगेट कहा जाता है। (0) फेंकता है IndexOutOfBoundsException (सूची अभी तक उपलब्ध नहीं है)
when(spy.get(0)).thenReturn("foo");
// आपको स्टबिंग के लिए doReturn () का उपयोग करना होगा:
doReturn("foo").when(spy).get(0);
2. पिछले अपवाद-स्टबिंग को ओवरराइड करना:
when(mock.foo()).thenThrow(new RuntimeException());
// असंभव: अपवाद-रुका हुआ फू () विधि कहा जाता है इसलिए RuntimeException को फेंक दिया जाता है। when(mock.foo()).thenReturn("bar");
// आपको स्टबिंग के लिए doReturn () का उपयोग करना होगा:
doReturn("bar").when(mock).foo();
उपरोक्त परिदृश्य मॉकिटो के सुरुचिपूर्ण सिंटैक्स का एक ट्रेडऑफ़ दिखाता है। ध्यान दें कि परिदृश्य बहुत दुर्लभ हैं, हालांकि। जासूसी छिटपुट होनी चाहिए और अपवाद-अतिव्याप्ति बहुत दुर्लभ है। यह उल्लेख नहीं है कि सामान्य रूप से ओवरराइडिंग स्टबिंग एक संभावित कोड गंध है जो बहुत अधिक स्टबिंग को इंगित करता है।
doReturn()
उपयोगी है।