EasyMock प्रलेखन बहुत स्पष्ट है किEasyMock - बराबरी के लिए व्यवहार को बदलने() और अन्य वस्तु तरीकों
तीन वस्तु तरीकों के लिए व्यवहार के बराबर होती है(), hashCode() और toString() के लिए बदला नहीं जा सकता मॉक ऑब्जेक्ट्स इज़ीमोक के साथ बनाए गए हैं, भले ही वे इंटरफ़ेस का हिस्सा हों जिसके लिए मॉक ऑब्जेक्ट बनाया गया हो।
कोड जो मैं परीक्षण करने का प्रयास कर रहा हूं, मेरे मॉक ऑब्जेक्ट की तुलना किसी अन्य चीज़ की तुलना करने के लिए करता है। मैं कुछ ऐसा करना चाहता हूं जैसे
expect(mock.equals(obj)).andReturn(false);
जब मैं ऐसा करता हूं, तो मुझे एक IllegalStateException मिलता है। दस्तावेज कहता है, क्या कोई आश्चर्य नहीं है।
क्या किसी के पास वैकल्पिक दृष्टिकोण के लिए कोई सुझाव है? क्या नकल ऑब्जेक्ट वापस लौटने पर नियंत्रण करने का एक और तरीका है जब बराबर() इसे कहा जाता है? मुझे लगता है कि मैं एक उप-वर्ग बना सकता हूं जो बराबर ओवरराइड करता है()
class FooImplOverrideEquals extends FooImpl {
public boolean equals;
public boolean equals(Object obj) { return equals; }
}
FooImplOverrideEquals mock = createMock(FooImplOverrideEquals.class);
mock.equals = false; // instead of expect(mock.equals(obj)).andReturn(false);
लेकिन यह सुरुचिपूर्ण लगता है। मुझे लगता है कि मुझे कुछ महत्वपूर्ण याद आ रही है (इसी कारण से EasyMock आपको उन ऑब्जेक्ट विधियों को ओवरराइड नहीं करने देता है)। क्या कोई बेहतर समाधान है?
तुम सिर्फ मीटर कॉल करने के लिए चाहते हैं ock.equals (कुछ), क्या आप विधि का नाम बदल नहीं सकते: mock.equalsalt (कुछ)? –
हां, लेकिन कोड में मैं परीक्षण कर रहा हूं, मैं .equals() और नहीं .equalsalt() का उपयोग करना चाहता हूं। –
मुझे लगता है, मोजे के बजाय आपको स्टब्स का उपयोग करने की आवश्यकता है :) –