मेरे पास मेरे परीक्षण वर्ग में एक निजी पद्धति है जो आमतौर पर उपयोग की जाने वाली Bar
वस्तु का निर्माण करती है । Bar
निर्माता कहता है someMethod()
मेरा मज़ाक उड़ाया वस्तु में विधि:
private @Mock Foo mockedObject; // My mocked object
...
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
}
मेरे कुछ परीक्षण तरीकों में मैं someMethod
उस विशेष परीक्षण द्वारा भी जाँच करना चाहता था। कुछ इस प्रकार है:
@Test
public void someTest() {
Bar bar = getBar();
// do some things
verify(mockedObject).someMethod(); // <--- will fail
}
यह विफल रहता है, क्योंकि नकली वस्तु ने someMethod
दो बार आह्वान किया था । मैं अपने परीक्षण के तरीकों को अपने तरीके के दुष्प्रभावों के बारे में परवाह नहीं करना चाहता हूं getBar()
, इसलिए क्या मेरी नकली वस्तु को अंत में रीसेट करना उचित होगा getBar()
?
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
reset(mockedObject); // <-- is this OK?
}
मैं पूछता हूं, क्योंकि प्रलेखन का सुझाव है कि नकली वस्तुओं को रीसेट करना आमतौर पर खराब परीक्षणों का संकेत है। हालाँकि, यह मुझे ठीक लगता है।
विकल्प
वैकल्पिक विकल्प कॉलिंग लगता है:
verify(mockedObject, times(2)).someMethod();
मेरी राय में, प्रत्येक परीक्षा को getBar()
बिना किसी लाभ के , की उम्मीदों के बारे में जानने के लिए मजबूर करता है ।