2013-02-02 38 views
7

साथ में पारित संदर्भ प्रकार को संशोधित करता उपहास करने के लिए मैं एक Interfaceएक विधि है कि शून्य रिटर्न लेकिन Moq

public interface IRequester 
{ 
    void Check(Check check); 
} 

मैं इस Moq का उपयोग कर जो स्पष्ट रूप से आसान है नकली करना चाहते हैं। मेरे पास यह मुद्दा है कि मैं मॉक कॉल के बाद Check संशोधित किया जाना चाहता हूं (जैसा कि यह एक संदर्भ है)। जैसा कि आप देख सकते हैं Check सिर्फ एक साधारण पॉको है।

public class Check 
{ 
    public string Url { get; set; } 
    public int Status { get; set; } 
} 

आदर्श रूप में मैं में पारित Check पर Status संपत्ति के मूल्य बदलना चाहते हैं।

यह संभव है?

उत्तर

15

Callback विधि का उपयोग करें। मुझे लगता है कि यह हो जाएगा कुछ की तरह:

yourMock.Setup(x => x.Check(It.IsAny<Check>())) 
    .Callback((Check c) => { c.Status = 1234567; }); 

आप ब्रेसिज़ { } और पहली अर्धविराम ; बाहर छोड़ सकते हैं यदि आप केवल एक काम की जरूरत है।

+0

बिल्कुल सही धन्यवाद। – baynezy

+0

अच्छा सवाल और अच्छा जवाब! यह बहुत उपयोगी था, धन्यवाद। – Louis

+0

बिल्कुल मुझे क्या चाहिए !!! – DubMan

0

लगता है कि तुम बात आप चाहते हैं पाने के लिए रेफरी खोजशब्द का उपयोग कर सकते हैं:

रेफरी एक विधि पैरामीटर पर विधि पैरामीटर एक प्रणाली एक ही चर कि विधि में पारित किया गया था का उल्लेख करने का कारण बनता है। किसी भी विधि में पैरामीटर में किए गए परिवर्तन उस परिवर्तनीय में दिखाई देंगे जब नियंत्रण कॉलिंग विधि पर वापस आता है।

http://msdn.microsoft.com/en-us/library/14akc2c7(v=vs.71).aspx