2012-09-11 24 views
5

मैं एक दृश्य है और इसके अंदर प्रतिपादन आंशिक दृश्य है:कैसे आंशिक दृश्य परीक्षण करने के लिए सी # एएसपी नेट में प्रस्तुत किया गया है MVC

<div class="partialViewDiv"> 
    @Html.RenderPartial("partial", Model.SomeModelProperty); 
</div> 

और एक नियंत्रक, जिसे इस दृश्य देता है

public ActionResult Action() 
     { 
      ... 
      var model = new SomeModel(){SomeModelProperty = "SomeValue"} 
      return View("view", model); 
     } 

दृश्य कैसे परीक्षण करने के लिए प्रस्तुत किया गया है मुझे पता है:

[TestMethod] 
public void TestView() 
{ 
    ... 
    var result = controller.Action(); 

    // Assert 
    result.AssertViewRendered().ForView("view").WithViewData<SomeModel>(); 
} 

लेकिन जब मैं

फोन
result.AssertPartialViewRendered().ForView("partial").WithViewData<SomeModelPropertyType>(); 

मैं यह त्रुटि संदेश

Expected result to be of type PartialViewResult. It is actually of type ViewResult. 

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

उत्तर

3

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

आप नियंत्रक का परीक्षण कर रहे हैं: ऐसे परीक्षण अनिवार्य रूप से दृश्य को मजाक करते हैं और यह सत्यापित करते हैं कि नियंत्रक अपेक्षित दृश्य (और मॉडल) को वापस कर रहा है।

क्योंकि दृश्य "व्यू" जो पार्टियल व्यू "आंशिक" प्रस्तुत करता है परीक्षण में शामिल नहीं है, इसलिए आप यह जांच नहीं सकते कि यह आपके द्वारा अपेक्षित काम कर रहा है या नहीं।

आम तौर पर, अधिकांश लोग इकाई परीक्षण दृश्य नहीं करते हैं; लेकिन यदि आप ऐसा करना चाहते हैं तो this blog या "एमवीसी यूनिट टेस्ट व्यू" के लिए Google देखें

2

बदलें

return View(model); 

करने के लिए

return PartialView(model); 

अपवाद यह सब कहते हैं। आप आंशिक दृश्य परिणाम की उम्मीद कर रहे हैं, लेकिन आप एक परिणाम परिणाम लौट रहे हैं।

+0

दावा 'AssertPartialViewRendered()। फॉरव्यू ("आंशिक") ...' अभी भी विफल हो जाएगा क्योंकि नियंत्रक एक दृश्य वापस कर रहा है " राय"। – Joe

+0

उस पर ध्यान नहीं दिया। धन्यवाद –