argThat
साथ ही लंबोदर
यह है कि आप अपने तर्क सत्यापन को कैसे विफल कर सकते हैं:
verify(mock).mymethod(argThat(
(x)->false
));
कहाँ पे
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.Mockito.verify;
argThat
साथ ही जोर देता है
उपरोक्त परीक्षण "कहेंगे" Expected: lambda$... Was: YourClass.toSting...
। यदि आप लंबोदर में मुखर का उपयोग करते हैं, तो आप विफलता का अधिक विशिष्ट कारण प्राप्त कर सकते हैं:
verify(mock).mymethod(argThat( x -> {
assertThat(x).isNotNull();
assertThat(x.description).contains("KEY");
return true;
}));
लेकिन: केवल 1 मेटल कॉल के साथ काम करता है। यदि सत्यापित विधि जिसे 2+ बार कहा जाता है, तो मॉकिटो सभी कहे जाने वाले संयोजनों को प्रत्येक सत्यापनकर्ता को पास करता है। तो मॉकिटो को उम्मीद है कि आपके सत्यापनकर्ता ने चुपचाप true
एक तर्क सेट के लिए रिटर्न किया, और false
अन्य वैध कॉल के लिए (कोई अपवाद नहीं)। वह अपेक्षा 1 विधि कॉल के लिए कोई समस्या नहीं है - इसे केवल 1 बार सही लौटना चाहिए।
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.Mockito.verify;
अब परीक्षण कहता है Expected: Obj.description to contain 'KEY'. Was: 'Actual description'
:। ध्यान दें: मैंने assertJ
दावा किया था , लेकिन यह आपके ऊपर निर्भर है कि किस रूपरेखा का उपयोग करना है।
argThat
कई तर्कों के साथ।
यदि आप उपयोग करते हैं argThat
, तो सभी तर्क मैचों के साथ प्रदान किए जाने चाहिए। उदाहरण के लिए:
verify(mock).mymethod(eq("VALUE_1"), argThat((x)->false));
// above is correct as eq() is also an argument matcher.
verify(mock).mymethod("VALUE_1", argThat((x)->false));
// above is incorrect; an exceptoin will be thrown, as the fist arg. is given without an argument matcher.
कहाँ पे:
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
eq
मिलान
यह जांचने का सबसे आसान तरीका है कि क्या तर्क समान है:
verify(mock).mymethod(eq(expectedValue));
// NOTE: ^ where the parentheses must be closed.
प्रत्यक्ष तर्क
यदि रेफरी द्वारा तुलना स्वीकार्य है, तो इसके साथ चलें:
verify(mock).mymethod(expectedArg);
// NOTE: ^ where the parentheses must be closed.
मूल प्रश्न विफलता का जड़ पक्षगणों का गलत स्थान था verify(mock.mymethod...
:। वह गलत था। सही होगा:verify(mock).*