मैं एक FizzConfigurator
वर्ग कि लगता है कि के लिए एक इकाई परीक्षण लिख रहा हूँ के साथ एक जासूस विधि मजाक वास्तव में डेटाबेस को आग लगाना और हिट नहीं करना), लेकिन यह मुझे सत्यापित करने की अनुमति देता है जो doBuzz(String)
को doWidget
निष्पादित करने के समाप्त होता है। मॉकिटो नौकरी के लिए सही उपकरण की तरह दिखता है।Mockito
public class FizzConfiguratorTest {
@Test
public void callingDoBuzzAlsoCallsDoWidget() {
FizzConfigurator fixture = Mockito.spy(new FizzConfigurator());
Mockito.when(fixture.doWidget(Mockito.anyString(), Config.ALWAYS)).
thenThrow(new RuntimeException());
try {
fixture.doBuzz("This should throw.");
// We should never get here. Calling doBuzz should invoke our
// stubbed doWidget, which throws an exception.
Assert.fail();
} catch(RuntimeException rte) {
return; // Test passed.
}
}
}
यह (कम से कम मेरे लिए) एक अच्छा रणनीति की तरह लगता है। लेकिन जब मैं वास्तव में यह कोड अप करने के लिए जाओ, मैं परीक्षा पद्धति के अंदर 2 लाइन पर निम्नलिखित संकलक त्रुटि मिलती है (Mockito.when(...)
लाइन:
विधि जब (टी) प्रकार Mockito में लिए लागू नहीं है । तर्कों (शून्य)
मुझे लगता है कि Mockito एक विधि है कि void
रिटर्न नकली नहीं कर सकते हैं तो मैं आप से पूछना:
- मैं सही ढंग से इस परीक्षण सेटअप आ रहा हूँ या वहाँ एक बेहतर, Mockito- है? अनुशंसित,परीक्षण का तरीका हुड के तहत 210 कॉल
doWidget
? और doWidget
मॉकिंग/स्टबिंग के बारे में मैं क्या कर सकता हूं क्योंकि यह मेरी संपूर्णFizzConfigurator
कक्षा का सबसे महत्वपूर्ण तरीका है?
एक और समस्या यह है कि 'कब() 'जासूसों पर उपयोग नहीं किया जा सकता है - जासूसों के दस्तावेज [जासूसों का उपयोग करके] पर एक नज़र डालें (http://docs.mockito.googlecode.com/hg/latest/org /mockito/Mockito.html#13) (गॉचा नोट करें) और [डू * विधियों] (http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#12)। – dj18
और जांचें कि क्या कॉल ['' Mockito.reset''] है (http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#17) आपके कोड में घुस गया है - नकली बातचीत और stubbing भूल जाता है। – phineas