राइनोमोक्स का उपयोग करके, मैं किसी संपत्ति के गेटर मूल्य को रोकने की कोशिश कर रहा हूं। संपत्ति को केवल इंटरफ़ेस के हिस्से के रूप में परिभाषित किया जाता है जिसमें केवल गेटर पहुंच होती है।एक संपत्ति को रगड़ना राइनो मोक्स का उपयोग कर
हालांकि मुझे त्रुटि मिलती है "अमान्य कॉल, अंतिम कॉल का उपयोग किया गया है या कोई कॉल नहीं किया गया है (सुनिश्चित करें कि आप वर्चुअल (सी #)/ओवरड्रेबल (वीबी) विधि को कॉल कर रहे हैं)।" मैं समझता हूं कि इसका मतलब यह हो सकता है कि मैं जिस संपत्ति को दबा रहा हूं वह आभासी नहीं है; हालांकि यह इंटरफ़ेस का हिस्सा है और मुझे यकीन नहीं है कि यही कारण है कि मुझे यह त्रुटि क्यों मिलती है ..
नीचे कोड कंकाल है। यदि मैं "stubRepository.Stub (x => x.StoreDeviceID) कहता हूं, तो लाइन को अपूर्ण करता हूं .प्रॉपर्टीबिनेयर();", तो मुझे एक नई त्रुटि मिलती है "संपत्ति को पढ़ना/लिखना चाहिए"। मैंने एसओ पर खोज की और this पृष्ठ मिला। लेकिन प्रस्तावित समाधान मेरी मदद नहीं करता है। कोई विचार?
stubRepository.Stub(x => x.StoreDeviceID).Return("test");
आम तौर पर स्टब्स साथ
, गुण सामान्य सी # गुण की तरह इस्तेमाल कर रहे हैं:
public interface IStore {
string StoreDeviceID {get;}
//other methods
}
public static class Store {
private IStore Repository;
public void SetRepository(IStore rep){
Repository = rep;
}
public StoredeviceID {
get{
return Repository.StoreDeviceID;
}
}
//other methods
}
public class TestClass {
[Test]
public void TestDeviceID() {
var stubRepository =
MockRepository.GenerateStub<IStore>();
Store.SetRepository(stubRepository);
//stubRepository.Stub(x => x.StoreDeviceID).PropertyBehavior();
SetupResult.For(stubRepository.StoreDeviceID).Return("test");
Assert.AreSame(Store.StoreDeviceID, "test");
}
}
@ एडम, चूंकि संपत्ति पूरी तरह से पढ़ी जाती है, इसलिए मैं इसे सेट नहीं कर सकता। हालांकि, संपत्ति को स्टब करने के लिए प्रदान किया गया कोड स्निपेट पूरी तरह से काम करता है। मुझे मूर्खतापूर्ण, मैंने इसे छोड़कर अन्य सभी विकल्पों की कोशिश की :) – Santhosh
StoreDeviceID में कोई सेटटर नहीं है, इसलिए आपका पहला कथन 'stubRepository.StoreDeviceID =" test ";' काम नहीं करेगा। –
आह - क्षमा करें। मैं अपना जवाब अपडेट करूंगा - खुशी है कि आपको यह काम मिल रहा है। –