2011-10-26 13 views
13

FakeItEasy का उपयोग करना, मैं एक नकली वस्तु पर एक संपत्ति के मूल्य की स्थापना पर कब्जा करने की कोशिश कर रहा हूँ:नकली पर किसी संपत्ति पर मूल्य सेट कैसे प्राप्त करें, FakeItEasy का उपयोग करना?

पहले इंटरफ़ेस:

interface ISomeInterface 
{ 
    int MyProperty {get;set;} 
} 

तो इकाई परीक्षण का एक टुकड़ा:

var myObject = A.Fake<ISomeInterface>(); 

int saved = 0; 
A.CallTo (() => myObject.MyProperty).Invokes (x => saved = ?????); 

SomeMethod (myObject); 
Assert.That (saved, Is.EqualTo (100)); 

और

void SomeMethod (ISomeInterface intf) 
{ 
    intf.MyProperty = 100; 
} 

मुझे नहीं पता कि ????? को बदलने के लिए क्या रखा जाए

उत्तर

13
var myObject = A.Fake<ISomeInterface>(); 

SomeMethod (myObject); 
Assert.That (saved.MyProperty, Is.EqualTo(100)); 
+0

आपके उत्तर के दूसरे भाग के बारे में, मैं चाहता हूं कि फर्जी ऑब्जेक्ट वास्तव में मूल्य 100 वापस कर दे ताकि अन्य इंटरफ़ेस इस इंटरफ़ेस का उपयोग कर उस मूल्य का उपयोग कर सकें। मैं स्वीकार करता हूं कि मेरा उदाहरण पर्याप्त स्पष्ट नहीं था। ;) –

+5

ठीक है, दो तरीके हैं, या तो A.CallTo (() => myObject.MyProperty) .Returns (100); या सिर्फ myObject.MyProperty = 100 ;. –

+0

@ पैट्रिक हैगने, दूसरा, जहां मैं सीधे संपत्ति सौंपता हूं, मेरे लिए काम कर रहा है। पहला एक एकॉलटो (() => dbVM.CreateFolderPath) .Returns (somePath); मुझे यह अपवाद लौटा दिया। वर्तमान प्रॉक्सी जनरेटर निम्न कारणों से निर्दिष्ट विधि को अवरुद्ध नहीं कर सकता: - गैर वर्चुअल विधियों को अवरुद्ध नहीं किया जा सकता है। – VivekDev

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