2010-09-11 3 views
6

चलो कहते हैं कि मैं एक वर्गक्या यह मॉकिटो जासूस के लिए सही मामला है?

class SomeClass 
{ 
    public void methodA() 
    {} 

    public void methodB() 
    {} 

    public void someMethod() 
    { 
    methodA(); 
    methodB(); 
    } 
} 

है मैं someMethod() Mockito साथ के व्यवहार परीक्षण करना चाहते हैं करते हैं।

एक ही रास्ता मैं के बारे में सोच सकता है जासूस() का उपयोग होता है,

तरह
SomeClass someClass = spy(new SomeClass()); 
someClass.someMethod(); 
InOrder inOrder = inOrder(someClass); 
inOrder.verify(someClass).methodA(); 
inOrder.verify(someClass).methodB(); 

मैं mockito के लिए नया हूँ और प्रलेखन कहते हैं

"रियल जासूस जब विरासत कोड के साथ काम कर ध्यान से और कभी-कभी इस्तेमाल किया जाना चाहिए, उदाहरण के लिए।"

तो शायद मुझे कुछ याद आ रहा है और उस विधि को सत्यापित करने के लिए बेहतर (दाएं) तरीका है और विधि बी को स्पष्ट रूप से परीक्षण मामले में बुलाए बिना बुलाया गया था।

धन्यवाद।

उत्तर

6

हाँ, spy() अपने उद्देश्य के लिए फिट है। चेतावनी इस तथ्य के कारण है कि वास्तविक तरीकों का आह्वान किया जाता है, और इसलिए आप अप्रत्याशित परिणाम प्राप्त कर सकते हैं (उदाहरण के लिए - बैंक खाते से वास्तविक धन वापस ले लिया जा रहा है)

-1

यदि आपके कोड को यूनिट परीक्षण के लिए जासूसी की आवश्यकता है - कुछ गलत है। जासूस एक कोड गंध का पहला संकेत है।

  1. आप विधि से एक मजाक से बचने और पूरे someMethod परीक्षण कर सकते हैं: आपके पास दो विकल्प अपने उदाहरण में यह से बचने के लिए किया है।
  2. MethodA और methodB वास्तव में मज़ाक उड़ाया किए जाने की जरूरत है - आप अलग करने के वर्ग आदि
उन्हें स्थानांतरित कर सकते