2012-11-26 4 views
5

में देख सकता हूं, मैं एमवीसी और यूनिट टेस्ट में नया हूं। मैं एक उत्पाद नियंत्रक का परीक्षण करने के लिए विजुअल स्टूडियो यूनिट टेस्ट फ्रेमवर्क का उपयोग कर रहा हूं। नियंत्रक वास्तविक वेबसाइट पर काम करता है लेकिन यह हमेशा यूनिट टेस्ट में शून्य देता है। मैंने ViewResult या मॉडल के नाम जैसे कीवर्ड के चारों ओर स्विच किया है, लेकिन उनमें से सभी काम नहीं करते हैं क्योंकि नियंत्रक हमेशा शून्य लौटता है। फिर मैंने ब्रेकिंग पॉइंट डाला और परीक्षण कोड डीबग करना शुरू कर दिया। जब मैं इसे तत्काल विंडो में परीक्षण करता हूं तो इसका मूल्य होता है।एमवीसी 3 कंट्रोलर पर यूनिट टेस्ट परिणाम के लिए शून्य देता है, लेकिन मैं उन्हें तत्काल विंडो

मुझे यहां क्या याद आ रही है?

मेरे पास इस यूआरएल पर एक स्क्रीनशॉट है: http://i.imgur.com/XBmoh.png स्क्रीनशॉट में आप तत्काल विंडो देख सकते हैं मॉडल मॉडल नियंत्रक से सफल हो गया है, परिणामस्वरूप पी 4 पी 5 संग्रहीत है। यह यूनिटटेस्ट में काम नहीं करता है।

सूची कोड काफी सरल है, यह वेबसाइट पर ठीक काम करता है। यहां कोड

public int PageSize = 4; 
    private IProductRepository repository; 

    public ProductController(IProductRepository productRepository) 
    { 
     repository = productRepository; 
    } 

    public ViewResult List(int page=1) 
    { 
     ProductsListViewModel viewModel = new ProductsListViewModel 
     { 
      Products = repository.Products 
      .OrderBy(p => p.ProductID) 
      .Skip((page - 1) * PageSize) 
      .Take(PageSize).AsEnumerable(), 
      PagingInfo = new PagingInfo 
      { 
       CurrentPage = page, 
       ItemsPerPage = PageSize, 
       TotalItems = repository.Products.Count() 
      } 
     }; 

     return View(viewModel); 
    } 
+0

मुझे लगता है कि यह आपके 'ProductController.List' कोड को पोस्ट करने में मदद करेगा। – Charlino

उत्तर

6

से पहले इस समस्या थी, तो आप अपनी परियोजनाओं में System.Web.Mvc का एक ही संस्करण का उपयोग नहीं कर रहे हैं। आपको अपने मुख्य प्रोजेक्ट और यूनिट टेस्ट प्रोजेक्ट में System.Web.Mvc के समान संस्करण का संदर्भ देना होगा।

+0

धन्यवाद एक टन अरवंद .. मैं इस समस्या से जूझ रहा था। यह भी नहीं सोच सकता कि एक डीएलएल संस्करण मेल नहीं है। फिर से धन्यवाद, यह आकर्षण की तरह काम किया। आपने समाधान को कैसे समझ लिया? –

+0

मेरे पास दो परियोजनाएं थीं, एक एप्रेस सोर्स कोड (एमवीसी समर्थक के लिए उदाहरण) दूसरा मेरा प्रोजेक्ट था। स्रोत कोड काम कर रहा था, मेरी परियोजना नहीं थी! चूंकि कोड बिल्कुल वही थे, मैंने अनुमान लगाया कि इसे संदर्भों के साथ करना था। – Arvand

0

मुझे आपके यूनिट परीक्षण में नोटिस है कि आप नियंत्रक कार्रवाई को दो बार कॉल करते हैं ... इसमें कुछ अनपेक्षित परिणाम हो सकते हैं?

कोशिश कर के बारे में कैसे:

//Action 
ProductionsListViewModel result = (ProductsListViewModel)controller.List(2).Model; 
Product prod = result.Products.ToArray(); 
+0

मैं परीक्षण कर रहा हूं। मैं कोशिश कर रहा हूं कि क्या उस समस्या कास्ट या नहीं। लेकिन दोनों परिणाम शून्य है। [कोड] उत्पाद प्रोड = परिणाम। उत्पाद। टोएरे(); [/ कोड] प्रोड सरणी होना चाहिए ताकि यह काम न करे। समस्या यह है कि परिणाम पहले से ही शून्य है। बाकी हिस्सा आसान होगा। – SnowFox108

संबंधित मुद्दे