2011-09-22 20 views
5

मान लीजिए कि मेरे पास दृढ़ता से टाइप किए गए कैशिंग इंटरफ़ेस हैं जो मैं नकल करना चाहता हूं। यह किसी भी तरह की वस्तुओं लेता है और उन्हें देता है, इस तरह:सामान्य रूप से एक विधि कॉल मॉकिंग

interface IMyCache 
{ 
    void Add(int key, object obj); 
    T Get<T>(int key); 
} 

मैं एक RhinoMocks ठूंठ है कि किसी भी पैरामीटर प्रकार है कि मैं यह करने के लिए भेजने के नकली होगा लिख ​​सकते हैं? आदर्श रूप में यह सिर्फ कुछ इस तरह दिखेगा:

var mock = MockRepository.GenerateStub<IMyCache>(); 
mock.Stub(m => m.Get<T>(1234)).Return(new T()); 

इसका कारण यह है कि यह टी की उम्मीद कर रहा है एक ठोस वर्ग होने के लिए काम नहीं करता है, लेकिन मैं इसे genericize करना चाहते हैं। क्या यह संभव है?

उत्तर

3

मुझे नहीं लगता कि आप कर सकते हैं। गैंडो मोक्स के साथ परीक्षण लिखते समय, आपको कंपाइलर के नियमों का पालन करना होगा, और सामान्य प्रकार टी निर्दिष्ट करने से बचने की आवश्यकता है, संकलक को दुखी करता है।

आप कई परीक्षण के बीच कि ठूंठ-कोड पुन: उपयोग करने की जरूरत है, टी के लिए विभिन्न प्रकार का उपयोग कर प्रत्येक, आप एक सहायक विधि के रूप में यहाँ प्रस्तावित कर सकते हैं: Rhino Mocks: How to stub a generic method to catch an anonymous type?

संबंधित मुद्दे