2009-07-30 14 views
7

टाइप के बजाय रनटाइम टाइप करें मेरे यूनिट परीक्षणों में से एक में मैं यह जांचना चाहता हूं कि सभी सार्वजनिक विधियां एक्शन रिसेट के प्रकार लौट रही हैं या नहीं।सी # यूनिट टेस्ट

Assert.IsInstanceOfType failed. Expected type:<System.Web.Mvc.ActionResult>. Actual type:<System.RuntimeType>. 

जब मैं उस जोर पर एक ब्रेकपाइंट सेट:

[Authorize] 
public ActionResult MyList() 
{ 
    return View(); 
} 
निम्न त्रुटि के साथ

:

[TestMethod] 
    public void Public_Methods_Should_Only_Return_ActionResults() 
    { 

     MethodInfo[] methodInfos = typeof(MyController).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); 

     foreach (MethodInfo methodInfo in methodInfos) 
     { 
      Assert.IsInstanceOfType(methodInfo.ReturnType, typeof(System.Web.Mvc.ActionResult)); 

     } 

    } 

यह परीक्षण MyController से पहली विधि पर चल रही है: यहाँ अपने परीक्षण विधि है और methodInfo.Return टाइप टाइप करें यह टाइप प्रकार है और यह ActionResult है।

क्या कोई मुझे बता सकता है कि परीक्षण क्यों उड़ा रहा है और इसे काम करने के लिए क्या करना है?

अग्रिम धन्यवाद, एमआर

उत्तर

11

उपयोग Assert.IsInstanceOfType के बजाय Assert.AreEqual। आप परिणाम के प्रकार की जांच करना चाहते हैं, न कि प्रतिबिंबित प्रकार की जानकारी के प्रकार।

+0

बहुत बहुत धन्यवाद। अब यह काम करता है जैसे मैं चाहता था। –

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