2011-06-16 20 views
15

लौटने के बजाय अपवाद फेंक दो मैं मॉकिटो में नया हूं और इसे यूनिट परीक्षणों में उपयोग करना चाहता हूं।डिफ़ॉल्ट मान

मुझे जो पसंद नहीं है वह Mockito.mock(Class<T>) के साथ बनाया गया मैक्स डिफ़ॉल्ट तरीके से (जैसे null) विधियों के लिए बनाया गया है जिनके व्यवहार स्पष्ट रूप से परिभाषित नहीं हैं। इसके बजाय, मैं चाहता हूं कि वे इस मामले में अपवाद फेंक दें ताकि मुझे पता चले कि मुझे इस परिभाषा को जोड़ने की जरूरत है।

SomeType m = mock(SomeType.class, new ThrowsException(new SomeRuntimeException(...))); 
when(m.a()).thenReturn(...); 

m.a(); // ok 
m.b(); // throws exception 

लेकिन है कि क्योंकि अपवाद when() को कॉल के दौरान पहले से ही फेंक दिया जाता है काम नहीं करता:

मैं निम्नलिखित की कोशिश की।

क्या यह हासिल करने का कोई और तरीका है?

+0

+1 के साथ: दिलचस्प उपयोग के मामले! मैंने कभी इस बारे में सोचा नहीं होगा :-) –

उत्तर

13

बदलें

when(m.a()).thenReturn(...);

doReturn(...).when(m).a();

+0

+1 धन्यवाद! DoReturn के जावाडोक दो लाइनों के बीच अंतर बताते हैं। यह वास्तव में मेरे मामले को भी संदर्भित करता है। :-) – Wolfgang

+2

मुझे आश्चर्य है कि मॉकिटो का कारण अस्थिर तरीकों के लिए अपवाद फेंकने का तरीका नहीं प्रदान करने का कारण है। ThrowsException + doReturn का डिफ़ॉल्ट उत्तर का उपयोग करना काम करता है, लेकिन इसका प्रभावी अर्थ यह है कि आप कभी भी 'कब' का उपयोग नहीं कर सकते, जो पसंदीदा तरीका है। –

+0

क्या आपका मतलब निम्न जैसा है: Mockito.doThrow (नया रनटाइम अपवाद())। जब (एम)। ए(); – fivanski

संबंधित मुद्दे