मैं Moq का उपयोग करके एक विधि का मज़ाक उड़ा रहा हूं और मैं चाहता हूं कि विधि null लौटाए लेकिन यह null वापस नहीं आ रहा है और मुझे यकीन नहीं है कि क्यों।

यह मेरा सेटअप कोड है:

var mock2 = new Mock<ReminderRepository>(stubPatientRemindersDBModelContainer);
mock2.CallBase = true;
mock2.Setup(x => x.GetPatientEscalations(userName, patientId, startDateTime, endDateTime, new DataTable()))
    .Returns((PatientEscalationsDto)null);

डिबगिंग करते समय, मैं उम्मीद कर रहा था कि GetPatientEscalations को असाइन किया गया वेरिएबल null होगा लेकिन ऐसा नहीं है।

मैं क्या गलत कर रहा हूं?

2
Rich 21 सितंबर 2018, 16:59

1 उत्तर

सबसे बढ़िया उत्तर

नकली सेटअप में पारित किए जा रहे तर्कों की जाँच करें।

 mock2
    .Setup(x => x.GetPatientEscalations(userName, patientId, startDateTime, endDateTime, new DataTable()))
    .Returns((PatientEscalationsDto)null);

यदि वे मेल नहीं खाते हैं जो वास्तव में पारित किया गया है जब सदस्य को आमंत्रित किया जाता है तो यह मूल कॉल पर वापस आ जाएगा क्योंकि आपने CallBase सक्षम किया है।

It.IsAny<T>() तर्क मिलानकर्ताओं का उपयोग करके उपहास करने वाले सदस्य की अपेक्षा को ढीला करने का प्रयास करें

 mock2
    .Setup(x => x.GetPatientEscalations(
        It.IsAny<string>(), 
        It.IsAny<int>(), //this is an assumption. use desired type here
        It.IsAny<DateTime>(), 
        It.IsAny<DateTime>(), 
        It.IsAny<DataTable>()))
    .Returns((PatientEscalationsDto)null);

इस तरह से पारित कोई भी तर्क मेल खाएगा और नकली सदस्यों को अपेक्षित व्यवहार करने के लिए आमंत्रित करेगा।

3
Nkosi 21 सितंबर 2018, 17:29