5.1 सत्यापित() पद्धत

व्हर्च्युअल ऑब्जेक्ट्स तयार करण्याव्यतिरिक्त, आणखी एक मनोरंजक कार्य अनेकदा उद्भवते - चाचणी अंतर्गत वर्ग योग्य ऑब्जेक्ट्सच्या योग्य पद्धतींना कॉल करतो याची खात्री करणे. शिवाय, त्याने योग्य पॅरामीटर्ससह आणि यासारख्या आवश्यक संख्येने कॉल केला.

यासाठी, मोकीटोकडे काही जादू देखील आहे - पद्धतींचे एक कुटुंब Mockito.verify(…). पद्धत कॉल चेकिंग निर्दिष्ट करणारा सामान्य नियम आहे:

Mockito.verify(an object).method name(parameter);

उदाहरण:

@ExtendWith(MockitoExtension.class)
class VerifyTest {
    @Mock
    List<String> mockList;

    @Test
    public void whenMockAnnotation() {
        //method call
        String name = mockList.get(10);

        // check if the method was called
        Mockito.verify(mockList).get(10);
    }
}

पद्धत कॉल दरम्यान, verify()आम्ही नियम सेट करतो की mockitoListपॅरामीटर 10 असलेली पद्धत ऑब्जेक्टवर कॉल केली जावी get().

5.2 कॉलची संख्या तपासण्यासाठी सत्यापन() पद्धत

कधीकधी अधिक जटिल सत्यापन परिस्थिती असतात. उदाहरणार्थ, आपल्याला केवळ पद्धत कॉल केली गेली होती हे तपासण्याची आवश्यकता नाही, परंतु, उदाहरणार्थ, ती 3 वेळा कॉल केली गेली होती. किंवा ते तुमच्याकडून चक्रात बोलावले गेले आणि म्हणून N वेळा म्हटले गेले पाहिजे.

हे केले जाऊ शकते की नाही हे आम्ही विचारणार नाही, आम्ही लगेच विचारू: असा नियम कसा लिहायचा? आणि पुन्हा, मोकीटो आम्हाला निराश करत नाही. नियम म्हणून निर्दिष्ट केले जाऊ शकते:

Mockito.verify(an object,quantity).method name(parameter);

महत्वाचे! प्रमाण हा एक प्रकार नसून intएक विशेष वस्तू आहे जी विविध नमुने परिभाषित करू शकते. तुम्हाला या पद्धतीच्या विविध आवृत्त्या आठवतात का any()? येथेही तेच आहे - काही खास पद्धती आहेत ज्याद्वारे तुम्ही विविध परिस्थिती सेट करू शकता:

पद्धत वर्णन
कधीही() पद्धत कधीही म्हणू नये
2 वेळा(n) n वेळा
3 किमान(n) n किंवा अधिक वेळा
4 एकदा तरी() 1 किंवा अधिक वेळा
जास्तीत जास्त(n) n किंवा कमी वेळा
6 फक्त() फक्त एक कॉल असावा आणि फक्त या पद्धतीसाठी

उदाहरण:

String name1 = mockList.get(1);  //method call
String name2 = mockList.get(2);  //method call
String name3 = mockList.get(3);  //method call

//check that the get() method was called 3 times
Mockito.verify(mockList, times(3)).get(anyInt());

तुम्ही हे देखील सांगू शकता की, निर्दिष्ट पद्धतीच्या आवाहनाव्यतिरिक्त, ऑब्जेक्टचे इतर कोणतेही संदर्भ केले जाऊ नयेत . यासाठी एक नियम आहे:

Mockito.verifyNoMoreInteractions(an object);

5.3 पद्धत कॉल ऑर्डर

मागील नियम कोणत्याही प्रकारे कॉलिंग पद्धतींचा क्रम नियंत्रित करत नाहीत. नियम पाळावा लागतो आणि बस्स. परंतु अशी परिस्थिती असते जेव्हा मेथड कॉल्सचा क्रम महत्त्वाचा असतो आणि यासाठी मोकीटोकडेही उपाय आहे.

विशिष्ट ऑब्जेक्ट वापरून पद्धत कॉलचा कठोर क्रम निर्दिष्ट केला जाऊ शकतो InOrder. प्रथम आपल्याला ते तयार करण्याची आवश्यकता आहे:

InOrder inOrder = Mockito.inOrder(an object);

आणि नंतर कॉल पद्धतीद्वारे त्यात नियम जोडा verify().

उदाहरण:


    List<String> mockedList = mock(MyList.class);
    mockedList.size();
    mockedList.add("a parameter");
    mockedList.clear();
 
    InOrder inOrder = Mockito.inOrder(mockedList);
    inOrder.verify(mockedList).size();
    inOrder.verify(mockedList).add("a parameter");
    inOrder.verify(mockedList).clear();

5.4 Mockito मध्ये अपवाद तपासत आहे

अपवाद टाकण्यात आले आहेत ही वस्तुस्थिती थोड्या वेगळ्या पद्धतीने तपासली जाते. हे करण्यासाठी, पद्धत वापरा assertThrows(). अशा तपासणीचे सामान्य स्वरूप आहे:

Assertions.assertThrows(exception.class, () -> an object.methodname());

काहीही क्लिष्ट नाही.

उदाहरण:

@ExtendWith(MockitoExtension.class)
class ThenThrowTest {
    @Mock
    List mockList;

    @Test
    public void whenMockAnnotation() {
        //set the behavior of the method (needed for demonstration purposes only)
        Mockito.when(mockList.size()).thenThrow(IllegalStateException.class);

        //check if an IllegalStateException will be thrown when calling the size method
        assertThrows(IllegalStateException.class, () -> mockList.size());
    }
}