c# - Can you explain what Moq is doing here in very simple terms? -


यह मेरा IP उत्पादक रिपोजिटरी है:

  सार्वजनिक इंटरफ़ेस IProductsRepository {IQueryable & lt; उत्पाद & gt; उत्पाद {प्राप्त; }}   

और यहां वह जगह है जहां मैं म्यूक का उपयोग कर रहा हूं:

  सार्वजनिक स्थैतिक IProductsRepository MockProductsRepository (पैराम्स उत्पाद [] prods) {var mockProductRepos = new Mock & lt ; IProductsRepository & gt; (); MockProductRepos.Setup (x = & gt; x.Products) .Returns (prods.AsQueryable ()); वापसी मुखौटा उत्पाद रीपोज़। ऑब्जेक्ट; }   

और यहां बताया गया है कि मैं कैसे इस मॉकप्रोडक्ट्स रिपोजिटरी विधि का उपयोग करता हूं:

  [टेस्ट] सार्वजनिक शून्य Product_Lists_Include_Correct_Page_Numbers () {// व्यवस्थित करें: अगर पांच उत्पाद हैं रिपॉजिटरी में ... var mockRepository = UnitTestHelpers.MockProductsRepository (नया उत्पाद {नाम = "P1"}, नया उत्पाद {नाम = "P2"}, नया उत्पाद {नाम = "P3"}, नया उत्पाद {नाम = "पी 4 "}, नया उत्पाद {नाम =" पी 5 "}); Var नियंत्रक = नया उत्पादकंट्रोलर (मॉक रिप्जिटरी) {PageSize = 3}; // yada yada yada ...}   

क्या वास्तव में Moq कर रहा है? मैं प्रो एएसपी.नेट एमवीसी 2 किताब का पालन कर रहा हूं और यह सभी तरह की नई जादूगरों को मेरे लिए पढ़ रहा हूं, और इससे पहले कि मैं पढ़ना जारी रखता हूं, मुझे समझना चाहूंगा कि क्या हो रहा है - और अभी मुझे अभी पता है, "यह काम करता है" कुछ नहीं अधिक। :)

आपके समय के लिए धन्यवाद।

एक वर्ग के लिए मेमोरी जो IProductsRepository लागू करता है, इसके सभी गुणों / विधियों के साथ, यह देखने के लिए कि क्या करना चाहिए, Moq को वापस बुलाते हैं। उत्पादों की आपूर्ति की गई सूची को वापस करने के लिए सेटअप उत्पाद संपत्ति को कॉन्फ़िगर कर रहा है (IQueryable के रूप में) जब इसे कहा जाता है इसके बाद उत्पन्न कोड को IProductsRepository के रूप में लौटाया जा सकता है, जो तब ProductsController को पारित किया जा सकता है, जो इसके गतिशील प्रकृति के बारे में समझदार नहीं है।

Comments