मैं इस इकाई बने रहने की NHibernate उपयोग कर रहा हूँ:मैं यूनिट परीक्षण संरक्षित गुणों को केवल एनएचबेरनेट द्वारा सेट करने के लिए कैसे उपयोग करूं?
public class Store
{
public int Id { get; protected set; }
public int Name { get; set; }
}
नोट कैसे Id
संपत्ति एक संरक्षित सेटर है। यह उपयोगकर्ताओं को Id
बदलने से रोकने के लिए है, जबकि एनएचबीर्नेट को इसे Id
असाइन करने की अनुमति देता है जब यह डेटाबेस में सहेजता है।
मेरी इकाई परीक्षण में से एक में, मैं निम्नलिखित कोड के साथ Moq उपयोग कर रहा हूँ मेरी भंडार बाहर उपहास करने के लिए:
var mock = new Mock<IRepository>();
mock.Setup(x => x.GetById<Store>(It.IsAny<int>()))
.Returns(new Store { Value = "Walmart" }); // can't set the ID here
var store = Repository.GetById<Store>(5);
Assert.That(store.Id == 5);
जब मैं Moq बता एक नया Store
उदाहरण वापस जाने के लिए, मैं असाइन नहीं कर सकते आईडी, और यूनिट परीक्षण विफल रहता है। मैं इस संपत्ति का परीक्षण कैसे करूं? मैं संपत्ति के पहुंच स्तर को बदलना नहीं चाहता क्योंकि मैं नहीं चाहता कि उपयोगकर्ता इसे मैन्युअल रूप से बदल दें, और फिर भी यह ठीक है कि मुझे इसका परीक्षण करने के लिए यहां क्या करना है।
धन्यवाद, मैं कभी नहीं स्टोर ऑब्जेक्ट को खुद मजाक कर रहा है! –
आपका स्वागत है। मैं आमतौर पर इंटरफेस के साथ इसका उपयोग करता हूं, लेकिन चूंकि आपके पास पहले से ही एनएचबीर्नेट के लिए वर्चुअल सब कुछ होना चाहिए, वैसे भी यह एक बहुत अच्छा फिट है। – arootbeer