मैं एक परीक्षण लिख रहा हूं जो एक विस्तार विधि के परिणामों पर निर्भर करता है, लेकिन मैं उस विस्तार पद्धति की भविष्य की विफलता कभी नहीं चाहता कि यह परीक्षण टूट जाए। उस परिणाम का मज़ाक उड़ाना स्पष्ट विकल्प लगता था लेकिन Moq एक स्थैतिक विधि (एक एक्सटेंशन विधि के लिए एक आवश्यकता) को ओवरराइड करने का एक तरीका प्रदान नहीं करता है । Moq.Protected और Moq.Stub के साथ एक समान विचार है, लेकिन वे इस परिदृश्य के लिए कुछ भी प्रस्तावित नहीं करते हैं। क्या मुझे कुछ याद आ रहा है या मुझे इस बारे में अलग तरीके से जाना चाहिए?
यहां एक तुच्छ उदाहरण दिया गया है जो सामान्य रूप से "गैर-अमान्य सदस्य पर अमान्य अपेक्षा" के साथ विफल होता है । यह एक विस्तार विधि का मजाक उड़ाने की जरूरत का एक बुरा उदाहरण है, लेकिन यह करना चाहिए।
public class SomeType {
int Id { get; set; }
}
var ListMock = new Mock<List<SomeType>>();
ListMock.Expect(l => l.FirstOrDefault(st => st.Id == 5))
.Returns(new SomeType { Id = 5 });
जैसा कि किसी भी टाइपमॉक दीवाने के लिए हो सकता है कि मैं इसके बजाय आईसोलेटर का उपयोग करने का सुझाव दे सकता हूं: मैं प्रयास की सराहना करता हूं क्योंकि ऐसा लगता है कि टाइपमॉक काम को आंखों पर पट्टी बांधकर और अक्षम कर सकता है, लेकिन हमारा बजट जल्द ही किसी भी समय नहीं बढ़ रहा है।