2013-07-18 5 views
21

पर ऑब्जेक्ट्स का मॉकिटो रिटर्न अनुक्रम मुझे पता है कि आप नकली पर वापस आने के लिए कई अलग-अलग ऑब्जेक्ट्स सेट कर सकते हैं। पूर्व।जासूसी विधि

when(someObject.getObject()).thenReturn(object1,object2,object3); 

क्या आप किसी भी तरह की जासूसी वस्तु के साथ वही काम कर सकते हैं? मैंने बिना किसी किस्मत के एक जासूसी पर उपरोक्त कोशिश की। मैं डॉक्स में पढ़ा की तरह नीचे

doReturn("foo").when(spy).get(0); 

लेकिन deReturn() केवल एक पैरामीटर स्वीकार करता है एक जासूस पर doReturn() उपयोग करने के लिए। मैं एक जासूस पर एक विशिष्ट क्रम में विभिन्न वस्तुओं को वापस करना चाहता हूँ। क्या यह संभव है?

मेरे पास निम्न की तरह एक वर्ग है और मैं इसका परीक्षण करने की कोशिश कर रहा हूं। मैं myClass, नहीं आप श्रृंखला doReturn() कॉल when() से पहले कर सकते हैं anotherClass

public class myClass{ 

    //class code that needs several instances of `anotherClass` 

    public anotherClass getObject(){ 
     return new anotherClass(); 
    } 
} 

उत्तर

28

परीक्षण करना चाहते हैं, तो यह काम करता है (mockito 1.9.5):

private static class Meh 
{ 
    public String meh() { return "meh"; } 
} 

@Test 
public void testMeh() 
{ 
    final Meh meh = spy(new Meh()); 

    doReturn("foo").doReturn("bar").doCallRealMethod().when(meh).meh(); 

    assertEquals("foo", meh.meh()); 
    assertEquals("bar", meh.meh()); 
    assertEquals("meh", meh.meh()); 
} 

इसके अलावा, मैं तुम कर सकते हो पता नहीं था when(x.y()).thenReturn(z1,z2), जब मैं इस मैं उपयोग .thenReturn() कॉल के साथ-साथ श्रृंखलित क्या करना है:

when(x.y()).thenReturn(z1).thenThrow().thenReturn(z2) 
+0

मैं बस जोड़ देंगे कि मैं 'BDDMockito' पसंद करेंगे उपनाम, लेकिन यह कोड में वरीयता का मामला है। यह निम्नलिखित देगा: 'WillReturn ("foo")। WillReturn ("bar")। WillCallRealMethod() दिया गया (meh)। Meh(); ' – Brice

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