2009-12-14 18 views
5

मेरे पास एक HTMLHelper एक्सटेंशन विधि है जो HTML को Response.Write पर आउटपुट करती है। इकाई का परीक्षण करने के लिए सबसे अच्छा कैसे है?यूनिट परीक्षण HtmlHelper पर एक एक्सटेंशन विधि

मैं इस विधि में एचटीएमएलहेल्पर को मॉक करने पर विचार कर रहा हूं, लेकिन मुझे यह सुनिश्चित नहीं है कि मुझे Response.Write को भेजे गए HTML को कैसे सत्यापित करना चाहिए।

धन्यवाद

उत्तर

5

आप ब्राउज़र को आउटपुट टेक्स्ट को एक HTML सहायक का उपयोग कर रहे कारण है कि यह एक स्ट्रिंग लौट सकते हैं और अपने ध्यान में रखते हुए की तरह कुछ करने की जरूरत नहीं है ...

<%=Html.YourExtension() %> 

यह है कि यह एक बनाता है महान सौदा अधिक टेस्टेबल।

दया,

दान

संपादित करें:

संशोधन हस्ताक्षर का एक परिवर्तन किया जाएगा

public static void YourExtension(this HtmlHelper html) 
{ 
    ... 
    Response.Write(outputSting); 
} 

को
public static string YourExtension(this HtmlHelper html) 
{ 
    ... 
    return outputSting; 
} 
+0

उसे संपादित:

निम्नलिखित का प्रयास करें –

0

यह अगर टी काम करता है वह विधि "आपका एक्सटेंशन" बस HtmlHelper विधियों का उपयोग कर रहा है जो स्ट्रिंग या HtmlString लौटाते हैं। लेकिन "BeginForm" जैसी विधियां MvcForm ऑब्जेक्ट लौटाती हैं और फॉर्म टैग सीधे टेक्स्टवाइटर पर लिखा जाता है कि HtmlHelper का संदर्भ है।

1

मैं HTML मददकर्ताओं का परीक्षण और सत्यापन करने के लिए निम्न कोड का उपयोग करता हूं। यदि आप कुछ भी जटिल कर रहे हैं, जैसे कि डिस्पोजेबल आधारित हेल्पर्स जैसे निर्भरता या हेल्पर्स के साथ मददगार, आपको एक बेहतर परीक्षण ढांचे की आवश्यकता होती है, फिर केवल एक सहायक की स्ट्रिंग को देखते हुए।

प्रमाणीकरण एक और उदाहरण है। सुझाव संशोधन के साथ

 var sb = new StringBuilder(); 
     var context = new ViewContext(); 
     context.ViewData = new ViewDataDictionary(_testModel); 
     context.Writer = new StringWriter(sb); 
     var page = new ViewPage<TestModel>(); 
     var helper = new HtmlHelper<TestModel>(context, page); 

     //Do your stuff here to exercise your helper 


     //Get the results of all helpers 
     var result = sb.ToString(); 

     //Asserts and string tests here for emitted HTML 
     Assert.IsNotNullOrEmpty(result); 
संबंधित मुद्दे