पर मैं मोक का उपयोग कर रहा हूं और प्रीसेट उचित डिफ़ॉल्ट के साथ अपने मैक्स बनाने के लिए बिल्डर वर्ग बनाना चाहता हूं आवश्यकतानुसार परीक्षण सेटअप के दौरान ओवरराइड किया जाना चाहिए। मैंने जो दृष्टिकोण लिया वह विस्तार विधियों का उपयोग करता है जिसमें मैं इनपुट पैरामीटर मान और अपेक्षित आउटपुट पास करता हूं। ऐसा करने में, मुझे लगता है कि मुझे अर्थात् समकक्ष कोड होने के लिए अलग-अलग व्यवहार दिखाई दे रहे हैं: इसे पास कर रहा है। Isny () सीधे एक सेटअप में बनाम बनाम बनाम बना रहा है। यह एक सेटअप में अप्रत्यक्ष रूप से है। उदाहरण:इसे पास करने के बीच क्या अंतर है। आईएसएनी <int>() और इसका मूल्य वैल्यू <int>() का एक विधि सेटअप
public interface IFoo
{
bool Bar(int value);
bool Bar2(int value);
}
public class Foo : IFoo
{
public bool Bar(int value) { return false; }
public bool Bar2(int value) { return false; }
}
var mock = new Mock<IFoo>();
mock.Setup(x => x.Bar(It.IsAny<int>())).Returns(true);
Assert.IsTrue(mock.Object.Bar(123)); // Succeeds
var myValue = It.IsAny<int>();
mock.Setup(x => x.Bar2(myValue)).Returns(true);
Assert.IsTrue(mock.Object.Bar2(123)); // Fails
दोनों कॉल समकक्ष (मेरे लिए) हैं, फिर भी बार 2 पर कॉल दावा विफल रहता है। ऐसा क्यों है?
उत्कृष्ट स्पष्टीकरण, बेन। मुझे संदेह था कि यह अभिव्यक्ति मूल्यांकन में झूठ बोल रहा है, जैसा कि आप इसका वर्णन करते हैं, इसके बदले में इसका विवरण। आईएसएनी()। मैंने आईएलएसपी में परावर्तित स्रोत को देखा और इसे देख सकता था। आईएसए , लेकिन समस्या के संबंध में यह कैसे काम करता है इसके चारों ओर मेरे सिर को लपेट नहीं पाया। स्पष्टीकरण के लिए फिर से धन्यवाद। –
मेरे लिए उस जादूगर को साफ़ करने के लिए धन्यवाद! मैं कहने की कोशिश कर रहा था "var anyFooParam = It.IsAny(); var anyBarParam = It.IsAny ();" यह देखने के लिए कि क्या यह मेरे परीक्षणों को और अधिक पठनीय बना देगा: .Setup (mock => mock.method (anyFooParam, anyBarParam))। रिटर्न (कुछ!) –