2012-07-18 13 views
17

(टैग द्वारा इंगित किया गया है, मैं moq का उपयोग कर रहा हूं) की अन्य संपत्ति पर निर्भर करता है। स्रोत के रूप मेंएक पठनीय संपत्ति का नकल कैसे करें जिसका मूल्य मॉक

interface ISource 
{ 
    string Name { get; set; } 
    int Id { get; set; } 
} 

interface IExample 
{ 
    string Name { get; } 
    ISource Source { get; set; } 
} 

अपने आवेदन में, IExample की ठोस उदाहरणों एक डीटीओ (IDataTransferObject) स्वीकार करते हैं:

मैं इस तरह एक अंतरफलक है। IExample के ठोस कार्यान्वयन पर कुछ गुणों को केवल स्रोत को सौंप दिया जाता है। इस तरह ...

class Example : IExample 
{ 
    IDataTransferObject Source { get; set; } 

    string Name { get { return _data.Name; } } 
} 

मैं IExample की एक स्टैंडअलोन नकली (स्टैंडअलोन अर्थ है कि मैं एक पर कब्जा कर लिया चर का उपयोग नहीं कर सकते क्योंकि IExample नकली के कई उदाहरण एक परीक्षण के दौरान बनाया जाएगा) बनाने के लिए चाहते हैं और नकली सेटअप करें कि IExample.Name IExample.Source.Name का मान देता है। तो, मैं इस तरह एक नकली कुछ बनाना चाहते हैं:

var example = new Mock<IExample>(); 
example.SetupProperty(ex => ex.Source); 
example.SetupGet(ex => ex.Name).Returns(what can I put here to return ex.Source.Name); 

अनिवार्य रूप से, मैं नकली कॉन्फ़िगर करने के लिए एक संपत्ति, नकली की एक subobject की एक संपत्ति के मूल्य का मूल्य के रूप में, वापस जाने के लिए चाहते हैं।

धन्यवाद।

उत्तर

28

आप शायद इस्तेमाल कर सकते हैं:

example.SetupGet(ex => ex.Name).Returns(() => example.Object.Source.Name); 

मूल्य तो जब संपत्ति पर पहुंचने पर निर्धारित किया जाएगा, और नकली के Source संपत्ति के Name संपत्ति से लिया जाएगा लौटा दी है।

+0

यह वही है जो मैं चाहता हूं। यह स्थानीय चर को कैप्चर करने के लिए कभी नहीं हुआ जो कि नकली है जिसे मैं अंतर्निहित मूल्य प्राप्त करने के लिए संदर्भित करना चाहता हूं। यह मेरे दिमाग को चोट पहुंचाता है। – wageoghe

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