3.1 doReturn() முறை
இப்போது மந்திரம் வருகிறது ...
நீங்கள் ஒரு போலி போலி பொருளை உருவாக்கினீர்கள் என்று வைத்துக்கொள்வோம், ஆனால் அது எப்படியாவது வேலை செய்ய வேண்டும். சில முறைகள் அழைக்கப்பட்டபோது, முக்கியமான ஒன்று செய்யப்பட்டது, அல்லது முறைகள் ஒரு குறிப்பிட்ட முடிவை அளித்தன. என்ன செய்ய?
Mockito நூலகம் ஒரு போலி பொருளில் விரும்பிய நடத்தையைச் சேர்க்க உங்களை அனுமதிக்கிறது.
ஒரு குறிப்பிட்ட முறை அழைக்கப்படும் போது ஒரு போலி பொருள் ஒரு குறிப்பிட்ட முடிவைத் தர விரும்பினால், குறியீட்டைப் பயன்படுத்தி பொருளில் இந்த "விதி" சேர்க்கப்படலாம்:
Mockito.doReturn(result).when(an object).method name();
நீங்கள் பார்க்கிறீர்கள், முறை அழைப்பின் முடிவில், method name?
உண்மையில் இங்கு எந்த அழைப்பும் நடக்கவில்லை. இந்த முறை doReturn()
ஒரு சிறப்பு ப்ராக்ஸி-பொருளை வழங்குகிறது, அதன் உதவியுடன் அது பொருளின் முறைகளின் அழைப்புகளை கண்காணிக்கிறது, இதனால், விதி எழுதப்படுகிறது.
மீண்டும். போலிப் பொருளில் சேர்க்க விதியை எழுதுவது மிகவும் புத்திசாலித்தனமான வழி . அத்தகைய குறியீட்டை நீங்கள் பார்க்கும் போது உங்கள் தலையில் சரியாக விளக்குவதற்கு சில திறமை தேவை. அனுபவத்துடன் வருகிறது.
ஒரு உறுதியான உதாரணம் தேவை என்று நினைக்கிறேன். ஒரு போலி வகுப்பு பொருளை உருவாக்கி ArrayList
அதன் முறையை size()
10 என்ற எண்ணை திரும்பக் கேட்கலாம். முழுமையான குறியீடு இப்படி இருக்கும்:
@ExtendWith(MockitoExtension.class)
class DoReturnTest {
@Mock
List mockList;
@Test
public void whenMockAnnotation () {
//create a rule: return 10 when calling the size method
Mockito.doReturn(10).when(mockList).size();
//the method is called here and will return 10!!
assertEquals(10, mockList.size());
}
}
ஆம், இந்த குறியீடு வேலை செய்யும், சோதனை தோல்வியடையாது.
3.2 எப்போது() முறை
ஒரு போலி பொருளில் நடத்தை விதியைச் சேர்க்க மற்றொரு வழி உள்ளது - ஐ அழைப்பதன் மூலம் Mockito.when()
. இது போல் தெரிகிறது:
Mockito.when(an object.method name()).thenReturn(result);
முந்தையதைப் போலவே, போலி பொருள் நடத்தை விதியை எழுதும் அதே வழி இதுவாகும். ஒப்பிடு:
Mockito.doReturn(result).when(an object).method name();
இங்கே அதே விஷயம் நடக்கிறது - ஒரு புதிய விதியின் கட்டுமானம்.
உண்மை, முதல் எடுத்துக்காட்டுக்கு இரண்டு குறைபாடுகள் உள்ளன:
- அழைப்பு மிகவும் குழப்பமாக உள்ளது.
an object.method name()
methodname()
முறை திரும்பினால் வேலை செய்யாதுvoid
.
சரி, நமக்குப் பிடித்த உதாரணத்தைப் பயன்படுத்தி எழுதுவோம்Mockito.when()
@ExtendWith(MockitoExtension.class)
class WhenTest {
@Mock
List mockList;
@Test
public void whenMockAnnotation() {
//create a rule: return 10 when calling the size method
Mockito.when(mockList.size() ).thenReturn(10);
//the method is called here and will return 10!!
assertEquals(10, mockList.size());
}
}
3.3 doThrow() முறை
ஒரு போலி பொருள் முறையை ஒரு குறிப்பிட்ட முடிவை எவ்வாறு வழங்குவது என்பதை நாங்கள் கண்டுபிடித்தோம். ஒரு குறிப்பிட்ட விதிவிலக்கை நான் எவ்வாறு வழங்குவது? அதை அனுப்பவா doReturn()
?
முறை திரும்புவதைத் தடுக்க, அதாவது விதிவிலக்கை எறிந்து, நீங்கள் விதியைப் பயன்படுத்தி விதியை அமைக்க வேண்டும் doThrow()
.
Mockito.doThrow(exception.class).when(an object).method name();
பின்னர் இரண்டாவது விருப்பம்:
Mockito.when(an object.method name()).thenThrow(exception.class);
சற்று எதிர்பார்க்கப்படுகிறது, இல்லையா?
சரி, நீங்கள் ஏற்கனவே புரிந்து கொள்ள ஆரம்பித்துவிட்டீர்கள். ஒரு உதாரணத்துடன் அதை சரிசெய்வோம்:
@ExtendWith(MockitoExtension.class)
class DoThrowTest {
@Mock
List mockList;
@Test
public void whenMockAnnotation() {
Mockito.when(mockList.size() ).thenThrow(IllegalStateException.class);
mockList.size(); //an exception will be thrown here
}
}
நீங்கள் ஒரு குறிப்பிட்ட விதிவிலக்கு பொருளை தூக்கி எறிய வேண்டும் என்றால், படிவத்தின் கட்டுமானத்தைப் பயன்படுத்தவும்:
Mockito.doThrow(new Exception()).when(an object).method name();
doThrow()
முறைக்கு ஒரு விதிவிலக்கு பொருளை அனுப்பினால் போதும் , அது முறை அழைப்பின் போது தூக்கி எறியப்படும்.
GO TO FULL VERSION