2012-01-31 56 views
3

在尖峯期間,我創建了一個漂亮的html助手擴展方法用於我的視圖,它運行良好。這將使我的觀點更容易維護。如何以單元測試調用html.EditorFor的擴展方法

現在我需要弄清楚如何進行單元測試。這是我正在嘗試做的要點:

public static MvcHtmlString EditorOrDisplayForBasedOnConvolutedBusinessLogic<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression) 
{ 
    if (ConvolutedBusinessLogic()) 
    { 
     return html.EditorFor(expression); 
    } 
    else 
    { 
     return html.DisplayFor(expression); 
    } 
} 

EditorFor和DisplayFor都是它們自己的擴展方法。在我的單元測試中,我可以根據ConvolutedBusinessLogic的輸入來聲明EditorFor或DisplayFor是否被適當調用?如果不這樣做,我該如何設置正確的存根/假貨/嘲笑,以便對EditorFor或DisplayFor的調用不拋出NullReferenceException,然後我可以斷言返回的內容是正確的?

回答

3

我嘲笑的上下文不夠完整。切換到使用基於http://offroadcoder.com/unit-testing-asp-net-html-helpers-with-simple-fakes/構建的假貨,這一切都奏效了。

我仍然歡迎關於如何嘲笑它而不是使用全套假貨的答案。

+1

截至2015年9月27日,更新後的鏈接很可能是http://offroadcoder.com/unit-testing-asp-net-html-helpers-with-simple-fakes/ – Manfred 2015-09-27 03:05:43

+0

這些假貨也適用於我。花了我幾小時(字面上)找到合適的嘲笑/假貨。 Gosh單元測試MVC真的是一個痛苦的屁股。最後,我可以單元測試'HtmlHelper.EditorFor()'擴展方法,而不拋出異常(像'NullReferenceExceptions'),它根本沒有幫助我們! – QuantumHive 2016-05-01 13:41:22

相關問題