उदा। के मैं इस वर्ग है मान लीजिए:क्या EasyMock का उपयोग करके किसी ऑब्जेक्ट को आंशिक रूप से नकल करने का कोई तरीका है?
public class Foo Implements Fooable {
public void a() {
// does some stuff
bar = b();
// moar coadz
}
public Bar b() {
// blah
}
// ...
}
और मैं Foo.a
परीक्षण करना चाहते हैं। मैं Foo.b
का नकल करना चाहता हूं, क्योंकि मैं उस विधि को अलग से जांच रहा हूं।
public class FooTest extends TestCase {
public void testA() {
Fooable foo = createPartialMock(
Fooable.class, // like with createMock
Foo // class where non-mocked method implementations live
);
// Foo's implementation of b is not used.
// Rather, it is replaced with a dummy implementation
// that records calls that are supposed to be made;
// and returns a hard coded value (i.e. new Bar()).
expect(foo.b()).andReturn(new Bar());
// The rest is the same as with createMock:
// 1. Stop recording expected calls.
// 2. Run code under test.
// 3. Verify that recorded calls were made.
replay(foo);
foo.a();
verify(foo);
}
}
मैं जानता हूँ कि मैं अपने ही Foo
मेरे लिए बात की इस तरह करने के लिए उपवर्ग लिख सकते हैं: क्या मैं कल्पना कर रहा हूँ कुछ इस तरह है। लेकिन अगर ऐसा नहीं करना है, तो मैं ऐसा नहीं करना चाहता, क्योंकि यह कठिन है यानी स्वचालित होना चाहिए।
धन्यवाद आंशिक नकली बना सकते हैं! अफसोस की बात है, ऐसा लगता है कि क्लैसक्स्टेंशन का उपयोग करने के लिए आपको जूनिट 4 की आवश्यकता है :(: http://easymock.org/EasyMock2_2_ClassExtension_Documentation.html मुझे लगता है कि इसका मतलब है कि जूनिट 3 उपयोगकर्ता भाग्य से बाहर हैं। – allyourcode
ओह ... यह एक अच्छी जानकारी है मुझे भी ... मेरे पास आपके मामले पर एक विचार है ... लेकिन यह आसान मॉक का उपयोग नहीं कर रहा है बल्कि विधियों को ओवरराइड करके अपने आप से मॉक्स बना रहा है और विस्तारित मॉक क्लास से अपना मॉक 'बार' ऑब्जेक्ट वापस कर सकता है। – raddykrish
EasyMock 3.1 के रूप में , क्लास एक्स्टेंशन लाइब्रेरी को बहिष्कृत किया गया है और आंशिक मॉकिंग को इज़ीमॉक में ही स्थानांतरित कर दिया गया है। यह कहता है कि यह जुनीट 3 के साथ काम करता है ताकि आप भाग्यशाली हो सकें: http://easymock.org/EasyMock3_1_Documentation.html – DoctorRuss