6.1 நிலையான முறையை கேலி செய்தல் mockStatic()
மேலும் ஒரு முக்கியமான விஷயம் நிலையான முறைகளை கேலி செய்தல் மற்றும் சரிபார்த்தல். "அதில் என்ன தவறு?" நீங்கள் கேட்கிறீர்கள். ஆம், நிலையானது, ஆனால் முறைகள் ஒன்றே. மேலும் நீங்கள் தவறாக இருப்பீர்கள்.
போலிப் பொருட்களைப் பற்றி நாம் எங்கிருந்து கற்றுக்கொண்டோம் என்பதை நினைவில் கொள்க? இந்த பொருள்கள் செயற்கையாக உருவாக்கப்படுவதால் DynamicProxy
. மற்றும் நிலையான முறைகள் எந்த பொருட்களுக்கும் பிணைக்கப்படவில்லை மற்றும் அவற்றுக்கான அழைப்புகளை இடைமறிப்பது DynamicProxy
சாத்தியமற்றது . அவ்வளவுதான்.
ஆனால் மொக்கிடோவின் படைப்பாளிகள் இங்கேயும் தப்பிக்க முடிந்தது - அவர்கள் தங்கள் சொந்த வகுப்பு ஏற்றி எழுதினார்கள் மற்றும் அதன் உதவியுடன் அவர்கள் பறக்கும்போது வகுப்புகளை மாற்ற முடிந்தது. ஒரு பெரிய மற்றும் கடினமான வேலை, ஆனால் அவர்கள் அதை செய்ய முடிந்தது.
இதற்கு நீங்கள் கூடுதல் நூலகத்தைச் சேர்க்க வேண்டும் pom.xml
:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>
நீங்கள் ஒரு நிலையான முறையை கேலி செய்ய வேண்டும் என்றால் எப்படி வேலை செய்வது என்பது இங்கே.
1 ஒரு சிறப்பு போலி வகுப்பு பொருளை உருவாக்கவும்:
MockedStatic<ClassName>managerObject = Mockito.mockStatic(ClassName.class);
2 இந்த பொருளுக்கு செயல்பாட்டு விதிகளைச் சேர்க்கவும்:
விதியின் இந்த பொருளுக்கு வேறு வழிகளில் ஒட்டிக்கொள்வது அவசியம்.
managerObject.when(ClassName::method name).thenReturn(result);
3 இந்த பொருளைப் பயன்படுத்துவதை உறுதிப்படுத்திக் கொள்ளுங்கள்,try-with-resources
இதனால் பொருள் உடனடியாக நீக்கப்படும் மற்றும் மோக்கிடோ அதனுடன் தொடர்புடைய விதிகளை அழிக்க முடியும்.
உதாரணமாக:
@Test
void givenStaticMethodWithNoArgs () {
try (MockedStatic< StaticUtils> utilities = Mockito.mockStatic( StaticUtils.class)) {
// add rule
utilities.when(StaticUtils::name).thenReturn("Hello");
// check if the rule works
assertEquals("Hello", StaticUtils.name());
}
}
@Mock
சிறுகுறிப்புகளைப் போல அழகாக இல்லை @Spy
, ஆனால் மிகவும் நடைமுறை. சோதனையின் கீழ் உள்ள முறைகளுக்குள் பயன்படுத்தப்படும் ஒரு எளிய நிலையான முறையை கேலி செய்வது சாத்தியமில்லாதபோது தேர்வுகளை எழுதுவது மிகவும் கடினமாக இருந்தது.
GO TO FULL VERSION