मेरे पास, जो मुझे लगता है, वह एक बहुत ही सरल आगे सेटअप है जिसमें एक खोज प्रकार बनाया जाता है और एक सेवा परत के माध्यम से और एक भंडार में पारित किया जाता है जहां डोमेन प्रकार की एक सूची लौटा दी जाती है। खोज प्रकार कुछ भी नहीं करता है लेकिन रिपोजिटरी विधि में अभिव्यक्ति वृक्ष का निर्माण करता है और मूल रूप से डेटाबेस से परिणाम वापस आते हैं। सुंदर सरलमोक के कॉलबैक बनाम रिटर्न का उपयोग कब करें?
भंडार इंटरफ़ेस:
public interface IDoNotSolicitRepo
{
IList<DNSContract> SelectWithCriteria(DNS_Search searchriteria);
}
सेवा भंडार को लागू करने:
public class DoNotSolicitService : BaseBLLService, IDoNotSolicitService
{
private readonly IDoNotSolicitRepo repo;
private readonly IPartnerService partnerService;
private readonly IDoNotSolicitReasonService dnsReasonSvc;
public DoNotSolicitService(IDoNotSolicitRepo _repo, IPartnerService _partnerSvc, IDoNotSolicitReasonService _dnsReasonSvc)
{
repo = _repo;
partnerService = _partnerSvc;
dnsReasonSvc = _dnsReasonSvc;
}
public ServiceResult<DNSContract> SelectWithCriteria(DNS_Search searchriteria)
{
var results = repo.SelectWithCriteria(searchriteria);
return ReturnServiceResult(results);
}
}
मैं इस परियोजना के साथ Moq सीखने पर काम कर रहा हूँ और मैं यह पता लगाने अगर मैं नहीं कर सकता मुझे कॉलबैक() या रिटर्न() का उपयोग करना चाहिए। मुझे दोनों के समग्र अंक मिलते हैं, लेकिन इस समय मेरे लिए ठीक से काम नहीं कर रहे हैं।
परीक्षण:
[Test]
public void SelectWithCriteria_FirstName()
{
mockRepository.Setup(mr => mr.SelectWithCriteria(It.IsAny<DNS_Search>()))
.Returns((IList<DNSContract> records) => new List<DNSContract>
{
new DNSContract {FirstName = "unit", LastName = "test"},
new DNSContract {FirstName = "moq", LastName = "setup"}
});
dnsSvc = new DoNotSolicitService(mockRepository.Object, new PartnerServiceStub(), new DoNotSoicitReasonServiceStub());
var result = dnsSvc.SelectWithCriteria(new DNS_Search { FirstName = "unit" });
Assert.IsNotNull(result);
Assert.IsTrue(result.Data.Any());
}
त्रुटि:
System.ArgumentException was unhandled by user code
Message=Object of type 'EP.Rest.Common.RestHelpers.DNS_Search' cannot be converted to type 'System.Collections.Generic.IList`1[EP.Rest.Domain.Contracts.DNSContract]'.
अब, मैं रिटर्न कि() विधि प्रकार में पारित देता है, इसलिए मैं उस का कारण है देख सकते हैं पढ़ा है वह त्रुटि लेकिन वास्तविक दुनिया में मैं चाहता हूं कि अलग-अलग प्रकार वापस आएं। मैंने कॉलबैक प्रतिनिधि बनाने का प्रयास किया है लेकिन उनमें से कोई भी सही महसूस नहीं कर रहा है।
इस पर देख रहे हैं, हो सकता है मैं ठूंठ वी का उल्लंघन किया है। नकली v। नकली जिम्मेदारियों जब कि मैं क्या चाहता हूँ, लेकिन मैं अभी भी कॉलबैक या वापसी पर फजी हूँ। – BryanGrimes
[इस प्रश्न] के लिए स्वीकृत उत्तर देखें (http://stackoverflow.com/questions/2833162/moq-callback-can-you-help-to-understand-it), आपको एक बहुत अच्छा विचार देना चाहिए। वह मोक के लिए प्रलेखन से भी जुड़ा हुआ है जो इसे थोड़ा सा समझता है। –
@ ब्रायनग्राइम्स, मैंने संदर्भित प्रश्न पर एक कॉलबैक उदाहरण पोस्ट किया, शायद इससे मदद मिलेगी। –