२.१ @मोक भाष्य
Mockito मध्ये मॉक ऑब्जेक्ट्ससह कार्य करण्याचे दोन मार्ग आहेत. पहिले म्हणजे पूर्णपणे व्हर्च्युअल ऑब्जेक्ट तयार करणे , दुसरे म्हणजे विद्यमान ऑब्जेक्टला रॅपरमध्ये गुंडाळणे. चला पहिल्यापासून सुरुवात करूया.
पूर्ण व्हर्च्युअल ऑब्जेक्ट तयार करण्यासाठी, तुम्हाला कोड लिहावा लागेल:
ClassName variable name = Mockito.mock(ClassName.class);
उदाहरण म्हणून मॉक अॅरेलिस्ट क्लास तयार करूया:
@ExtendWith(MockitoExtension.class)
class MockTest {
@Test
public void whenNotUseMockAnnotation_thenCorrect() {
List mockList = Mockito.mock(ArrayList.class);
//these methods won't do anything - they are stubs
mockList.add("one");
mockList.add("two");
}
}
या उदाहरणात, आम्ही बनावट ArrayList तयार करतो आणि mockList व्हेरिएबलमध्ये त्याचा संदर्भ संग्रहित करतो. या ऑब्जेक्टच्या पद्धती काहीही करत नाहीत.
तसे, हा कोड आणखी लहान लिहिला जाऊ शकतो, कारण यासाठी एक विशेष भाष्य आहे @Mock
.
@ExtendWith(MockitoExtension.class)
class MockTest {
@Mock
List mockList;
@Test
public void whenNotUseMockAnnotation_thenCorrect() {
//these methods won't do anything - they are stubs
mockList.add("one");
mockList.add("two");
}
}
दुस-या बाबतीत, MockitoExtension
ते स्वतः वर्ग कोडचे विश्लेषण करेल आणि आवश्यक स्टब तयार करेल. आपल्याला पद्धत कॉल करण्याची आवश्यकता नाही Mockito.mock()
. एक भाष्य आणि आभासी ऑब्जेक्ट तयार आहे. सौंदर्य.
2.2 @Spy भाष्य
Mockito मधील वस्तूंचा दुसरा महत्त्वाचा प्रकार म्हणजे अस्तित्वात असलेल्या वस्तूंवर आवरणे. ते, एकीकडे, विद्यमान क्लासेस वापरण्याची परवानगी देतात आणि दुसरीकडे, अशा ऑब्जेक्ट्सच्या सर्व पद्धती आणि व्हेरिएबल्सवर कॉल इंटरसेप्ट करण्यासाठी: आवश्यक तेथे त्यांचे कार्य दुरुस्त करण्यासाठी. ते मॉक ऑब्जेक्ट्स प्रमाणेच वापरले जातात.
ऑब्जेक्टवर रॅपर तयार करण्यासाठी, तुम्हाला कोड लिहावा लागेल:
ClassName variable name = Mockito.spy(an object);
ArrayList वर्गाभोवती रॅपर असलेले उदाहरण:
@ExtendWith(MockitoExtension.class)
class SpyTest {
@Test
public void whenMockAnnotation() {
List<String> mockList = Mockito.spy(new ArrayList<String>());
//these methods will work!
mockList.add("one");
mockList.add("two");
}
}
त्याच्या सर्वात सोप्या स्वरूपात, रॅपर ऑब्जेक्टवर कॉल केल्याने मूळ ऑब्जेक्टवर कॉल पुनर्निर्देशित केला जातो, ज्याचा संदर्भ तो स्वतःमध्ये ठेवतो . सर्व काही मूळ ऑब्जेक्टप्रमाणेच कार्य करेल.
तुम्ही भाष्य वापरून रॅपर देखील तयार करू शकता - @Spy
.
@ExtendWith(MockitoExtension.class)
class SpyTest {
@Spy
List mockList = new ArrayList<String>();
@Test
public void whenMockAnnotation() {
// these methods will work!
mockList.add("one");
mockList.add("two");
}
}
ही दोन कोड उदाहरणे समतुल्य आहेत.
GO TO FULL VERSION