पर किसी भी विधि मंगलाचरण यह एक सामान्य तरीके से एक नकली पर सभी विधि आमंत्रण रोकना संभव है अवरोधन?Mockito - एक नकली
उदाहरण
जैसे एक विक्रेता प्रदान की कक्षा को देखते हुए:
public class VendorObject {
public int someIntMethod() {
// ...
}
public String someStringMethod() {
// ...
}
}
मैं एक नकली है कि फिर से निर्देशन सभी विधि अन्य वर्ग जहां विधि वहाँ मिलान कर रहे हैं करने के लिए कॉल बनाना चाहेंगे हस्ताक्षर:
public class RedirectedToObject {
public int someIntMethod() {
// Accepts re-direct
}
}
कब()। तब Answers() construc Mockito में टी बिल फिट करने के लिए लगता है, लेकिन मैं एक तरह से किसी भी आर्ग के साथ किसी भी विधि कॉल मैच के लिए नहीं मिल रहा। InvocationOnMock निश्चित रूप से मुझे इन सभी विवरणों को वैसे भी देता है। क्या ऐसा करने का एक सामान्य तरीका है? कुछ है कि इस है, जहां जब उचित कोड साथ बदल दिया है की तरह लग रहे हैं (VO *।):
VendorObject vo = mock(VendorObject.class);
when(vo.anyMethod(anyArgs)).thenAnswer(
new Answer() {
@Override
public Object answer(InvocationOnMock invocation) {
// 1. Check if method exists on RedirectToObject.
// 2a. If it does, call the method with the args and return the result.
// 2b. If it does not, throw an exception to fail the unit test.
}
}
);
विक्रेता वर्गों के आसपास जोड़ना रैपर आसान मजाक बनाने के लिए एक विकल्प नहीं है क्योंकि:
- एक मौजूदा कोड बेस बहुत बड़ा है।
- अत्यंत प्रदर्शन महत्वपूर्ण अनुप्रयोगों का एक हिस्सा।
मुझे बताओ यह रूप में सरल है, जब (VO) .thenAnswer (...): हे – Karle
'बेहद प्रदर्शन महत्वपूर्ण अनुप्रयोगों का एक हिस्सा। " नकली/प्रॉक्सी ऑब्जेक्ट को इस मामले में एक रैपर जोड़ने से अलग कैसे जोड़ रहा है? क्या आप इसे केवल इकाई परीक्षण, या वास्तविक ऐप में करने में रुचि रखते हैं? –
@mattb: प्रदर्शन पहलू आवरण वर्गों का उपयोग के खिलाफ सबसे बड़ी तर्क नहीं है। हम मूल विक्रेता वस्तु और एक कार्यान्वयन वर्ग है कि वास्तविक विक्रेता वस्तु के लिए अनुरोध अग्रेषित करता है के आधार पर एक इंटरफ़ेस बनाने चाहते हैं। इसके लिए निष्पादन समय वास्तविक विक्रेता ऑब्जेक्ट की तुलना में छोटा होने जा रहा है। अधिक महत्वपूर्ण तर्क विक्रेता ऑब्जेक्ट का उपयोग कर मौजूदा कोड बेस है। – Karle