मैं डेटा प्रदाता के माध्यम से विधि का परीक्षण करने के लिए एक नकली वस्तु को पारित करने की कोशिश कर रहा हूं।मैकिटो टेस्टएनजी का उपयोग करके मैं डेटा प्रदाता में नकली ऑब्जेक्ट कैसे पास कर सकता हूं?
@Test
public class FirstTest {
@InjectMocks
First firstSpy;
@Mock
Second secondMock;
@Mock
Third thirdMock;
@BeforeMethod
public void beforeMethod() {
firstSpy = Mockito.spy(new First());
MockitoAnnotations.initMocks(this);
}
@DataProvider
private final Object[][] serviceData() {
return new Object [][] {
{thirdMock, 1},
{null, 2}
};
}
@Test(dataProvider="serviceData")
public void m1(Third thirdObject, int noOfTimesm3Called) {
Mockito.doReturn(secondMock).when(firstSpy).m4();
Mockito.doReturn(thirdObject).when(secondMock).m2();
firstSpy.m1();
verify(firstSpy, times(noOfTimesm3Called)).m3();
}
}
हालांकि, जब मैं इस चलाने के लिए, यह प्रदर्शित करता है
PASSED: m1(null, 2)
FAILED: m1(null, 1)
जो दोनों बार एक अशक्त वस्तु पारित हो जाता है का मतलब है: नीचे अपने परीक्षण वर्ग है। इसके पीछे का कारण क्या है? और मैं वांछित व्यवहार कैसे प्राप्त कर सकता हूं? मैं परीक्षण विधि में किसी भी अन्य बयान से बचना चाहता हूं, और डेटा प्रदाता का उपयोग करके दोनों मामलों को एक ही विधि में जांचना चाहता हूं। क्या इसके लिए कोई रास्ता है?
धन्यवाद! MockitoAnnotations.initMocks स्थानांतरित (यह); सेवा के लिए इसे हल किया। – Caesar