2012-10-22 14 views
7

से प्रत्येक बार अलग-अलग मान लौटें मेरे पास एक यूनिट परीक्षण है जहां मैं java.net.URI कक्षा का मज़ाक उड़ा रहा हूं। इसके अलावा, मैं एक jmockit NonStrictExpectation बना रहा हूं जहां मुझे URI.getPath() का आविष्कार करने और एक विशेष स्ट्रिंग लौटने की उम्मीद है।jmockit अपेक्षा

परीक्षण किया जा रहा कोड दो बार URI.getPath() आमंत्रित करता है, जहां मुझे प्रत्येक बार एक अलग स्ट्रिंग भेजने की आवश्यकता होती है।

public void validateResource() { 
    // some code 
    URI uri = new URI(link1.getHref()); 
    String path1 = uri.getPath(); 
    // some more code 
    uri = new URI(link2.getHref()); 
    String path2 = uri.getPath(); 
} 

यहाँ इकाई परीक्षण कोड है::

यहाँ परीक्षण के अंतर्गत अपने वास्तविक तरीका है

@Mocked URI uri; 

@Test 
public void testValidateResource() { 
    new NonStrictExpectations() { 
     { 
      // for the first invocation 
      uri.getPath(); returns("/resourceGroup/1"); 

      // for the second invocation [was hoping this would work] 
      uri.getPath(); returns("/resource/2"); 
     } 
    }; 
    myObject.validateResource(); 
} 

अब, मैं चाहता हूँ "/resource/2" जब URI.getPath() दूसरा कहा जाता है मेरी उम्मीद से वापस करने पहर। लेकिन यह हमेशा पहली उम्मीद को हिट करता है और "/recourceGroup/1" देता है। यह मेरी समस्या है।

मैं इसे कैसे कर सकता हूं? मैं कई कारणों से वास्तव में StrictExpectations का उपयोग नहीं कर सकता, और NonStrictExpectations के साथ रहना होगा।

उत्तर

15

लगता है जैसे तुम सिर्फ एक बार का उपयोग uri.getPath() सूचीबद्ध करने की आवश्यकता है, और इस तरह returns की varargs संस्करण ... कुछ: यह documentation के अनुसार है

uri.getPath(); returns("/resourceGroup/1", "/resourceGroup/2"); 

, वैसे भी ... मैं परीक्षण नहीं किया मैं खुद।

किसी दिए गए उम्मीद के लिए लगातार कई वापसी मूल्यों को रिकॉर्ड करने के मामले में, रिटर्न (ऑब्जेक्ट, ऑब्जेक्ट ...) विधि के लिए एक कॉल किया जा सकता है।

+0

एक आकर्षण की तरह काम किया ... धन्यवाद :) –

+0

बढ़िया, खुशी हुई यह काम किया! –

+0

उत्तर में प्रलेखन लिंक टूटा हुआ है। यहां एक अपडेट किया गया [लिंक] (http://jmockit.org/tutorial/Mocking.html#results) –