4.1 முறை அளவுருக்கள்

முந்தைய விதிகள் போலி பொருளில் சேர்க்கப்பட்ட அளவுருக்கள் இல்லாத முறைகள். மற்றும் அளவுருக்கள் கொண்ட முறைகளுக்கான விதிகளை எவ்வாறு உருவாக்குவது? மேலும், நான் விதிகளை உருவாக்க விரும்புகிறேன், இதனால் சில அளவுரு மதிப்புகளுக்கு ஒரு முடிவு இருக்கும், மற்றவர்களுக்கு - மற்றொன்று.

அப்படித்தான் நீங்களும் செய்யலாம். ஒரு குறிப்பிட்ட அளவுருவுடன் குறிப்பிட்ட ஒன்றைத் திருப்பியளிக்கும் முறையை நீங்கள் விரும்பினால், விதியை இப்படி எழுதலாம்:

Mockito.doReturn(result).when(an object).method name(parameter);

நன்றாகப் புரிந்துகொள்ள ஒரு உதாரணத்தைப் பார்ப்போம். எங்கள் பட்டியல் 10 வது உறுப்பைக் கோரும்போது இவன் பெயரையும், 500 வது உறுப்பைக் கோரும்போது மரியா என்ற பெயரையும் வழங்கட்டும். சீக்கிரம் சொல்லிவிட முடியாது.

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

    @Test
    public void whenMockAnnotation() {
        //adding the first rule
        Mockito.doReturn("Ivan").when(mockList).get(10);
        //adding a second rule
        Mockito.doReturn("Maria").when(mockList).get(500);

        assertEquals("Ivan", mockList.get(10));
        assertEquals("Maria", mockList.get(500));

    }
}

4.2 அளவுரு வார்ப்புருக்கள்

உடனடியாக தந்திரமான சக ஊழியர்கள் என்னிடம் ஒரு கேள்வியைக் கேட்பார்கள்: “முறைக்கு வாதங்கள் தேவைப்பட்டால் என்ன செய்வது, ஆனால் எந்த மதிப்புகளுக்கும் அது அதே முடிவைத் தர வேண்டுமா?”. எழுத வேண்டாம்:

Mockito.doReturn("Ivan").when(mockList).get(1);
Mockito.doReturn("Ivan").when(mockList).get(2);
Mockito.doReturn("Ivan").when(mockList).get(99);

இல்லை, அப்படி எழுதும்படி யாரும் உங்களை வற்புறுத்தவில்லை. எந்தவொரு வாதங்களுடனும் ஒரு முறைக்கு வேலை செய்யும் போலி பொருளுக்கு நீங்கள் ஒரு விதியைச் சேர்க்க விரும்பினால், இதற்கு ஒரு சிறப்பு பொருள் உள்ளது:

Mockito.any()

அதனுடன் எங்கள் உதாரணம் இப்படி எழுதப்படும்:

Mockito.doReturn("Ivan").when(mockList).get(any(int.class));

இங்கு ஒன்றிரண்டு நுணுக்கங்கள் உள்ளன. பொருளுக்கு Mockito.any()வகை உள்ளது Object, எனவே வெவ்வேறு வகைகளின் அளவுருக்களுக்கு ஒப்புமைகள் உள்ளன:

முறை அளவுரு வகை
1 ஏதேனும் () பூஜ்யத்தை உள்ளடக்கிய பொருள்
2 ஏதேனும் (ClassName.class) வகுப்பு பெயர்
3 anyInt() முழு எண்ணாக
4 ஏதேனும் பூலியன்() பூலியன்
5 ஏதேனும் இரட்டை() இரட்டை
6 ஏதேனும் பட்டியல்() பட்டியல்

இன்னும் சரியாக, எங்கள் உதாரணம் இப்படி இருக்கும்:

Mockito.doReturn("Ivan").when(mockList).get(anyInt());

4.3 doAnswer() முறை

மெய்நிகர் முறைகளின் சிக்கலான நடத்தைக்கு நாங்கள் வந்தோம். இந்த மெய்நிகர் முறை சிக்கலான நடத்தையைக் கொண்டிருக்க வேண்டும் என்று நீங்கள் விரும்பும் போது விரைவில் அல்லது பின்னர் ஒரு சூழ்நிலை ஏற்படும். எடுத்துக்காட்டாக, இது அளவுருக்களைப் பொறுத்து மதிப்புகளை வழங்க வேண்டும், சரத்தை பெரிய எழுத்துக்கு மாற்றவும்.

இதற்கு ஒரு சிறப்பு முறை உள்ளது - doAnswer(), உங்களுக்குத் தேவையானதைச் செய்யும் ஒரு செயல்பாடு அனுப்பப்படுகிறது:

Mockito.doAnswer(function).when(an object).method name(parameter);

get()வகுப்பு முறையை Listஅதற்கு அனுப்பிய வாதத்தின் வர்க்கத்தை திரும்பச் செய்யலாம் . மேலும் பின்வரும் நிரலை எழுதவும்:

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

    @Test
    public void whenMockAnnotation() {
        Mockito.doAnswer(invocation -> {
            int parameter = invocation.getArgument(0);
            return parameter * parameter;
        }).when(mockList).get(anyInt());

        assertEquals(100, mockList.get(10));
        assertEquals(25, mockList.get(5));
    }
}

விடை வகுப்பின் பொருளைப் பயன்படுத்தி செயல்பாட்டை வரையறுத்தோம்.