मैं सेवा के बाद सेवा परीक्षण के लिए Mockito का उपयोग कर रहा हूँ। doAnswer
बनाम thenReturn
का उपयोग करने के लिए मैं उलझन में हूं।मॉकिटो: doAnswer बनाम फिर से
क्या कोई मुझे विस्तार से मदद कर सकता है? अब तक, मैंने thenReturn
के साथ इसे आजमाया है।
मैं सेवा के बाद सेवा परीक्षण के लिए Mockito का उपयोग कर रहा हूँ। doAnswer
बनाम thenReturn
का उपयोग करने के लिए मैं उलझन में हूं।मॉकिटो: doAnswer बनाम फिर से
क्या कोई मुझे विस्तार से मदद कर सकता है? अब तक, मैंने thenReturn
के साथ इसे आजमाया है।
आपको thenReturn
या doReturn
का उपयोग करना चाहिए जब आप एक विधि कॉल के दौरान वापसी मूल्य को जानते हैं। जब आप मॉक किए गए विधि का आह्वान करते हैं तो यह परिभाषित मान वापस कर दिया जाता है।
thenReturn(T value)
विधि कहने पर लौटने के लिए वापसी मूल्य सेट करता है।
@Test
public void test_return() throws Exception {
Dummy dummy = mock(Dummy.class);
int returnValue = 5;
// choose your preferred way
when(dummy.stringLength("dummy")).thenReturn(returnValue);
doReturn(returnValue).when(dummy).stringLength("dummy");
}
Answer
प्रयोग किया जाता है जब आप अतिरिक्त कार्यों क्या करने की जरूरत है जब एक मज़ाक उड़ाया विधि शुरू हो जाती है, उदाहरण के लिए जब आपको इस विधि कॉल के पैरामीटर के आधार पर वापसी मूल्य की गणना करने की आवश्यकता होती है।
doAnswer()
का उपयोग करें जब आप सामान्यAnswer
के साथ एक शून्य विधि को स्टब करना चाहते हैं।उत्तर निष्पादित एक क्रिया निर्दिष्ट करता है और जब आप नकली के साथ बातचीत करते हैं तो लौटाया जाता है।
@Test
public void test_answer() throws Exception {
Dummy dummy = mock(Dummy.class);
Answer<Integer> answer = new Answer<Integer>() {
public Integer answer(InvocationOnMock invocation) throws Throwable {
String string = invocation.getArgumentAt(0, String.class);
return string.length() * 2;
}
};
// choose your preferred way
when(dummy.stringLength("dummy")).thenAnswer(answer);
doAnswer(answer).when(dummy).stringLength("dummy");
}
धन्यवाद @schlauergerd। अब मैं समझ गया। –
हाय @ रोलैंड Weisleder लेकिन कभी-कभी आपको कुछ मूल्य उत्पन्न आंतरिक कोड वापस करना चाहिए और तर्कों के साथ कुछ भी नहीं करना चाहिए, उदा। 'कोड = UUID.randomUUID()', मुझे 'mockito' के साथ इसे कार्यान्वित करना असंभव लगता है। – zhuguowei
जब आपके नकली को प्रत्येक आमंत्रण के लिए एक नया यूयूआईडी वापस करनी चाहिए तो आप 'वापसी' को केवल 'वापसी UUID.randomUUID(); 'के साथ लागू करेंगे। –