Asp.net

ASP.NET MVC 中的單元測試如何優於 Web 窗體?

  • August 2, 2010

我剛剛開始學習 ASP.NET MVC。在將 ASP.NET MVC 與 Web 窗體進行比較時,MVC 的主要優勢之一總是被告知更好地支持單元測試。我可以很好地解釋它如何獲得更好的支持嗎?

編輯:如果可能,請在兩者中提供範例。

Asp.Net MVC 有更好的單元測試支持主要有一個原因 - 整個架構是為使用而建構的HttpContextBaseHttpRequestBase並且HttpResponseBase.

Asp.Net webforms 依賴於HttpContext.Current,這是一個您無法控制的單例 - 它被設置並作為HttpApplication執行請求的一部分傳遞到您的頁面。在大多數情況下,為了讓頁面正確執行,您需要在真實的HttpContext. 由於 HttpContext 的許多屬性是不可設置的(例如 Request 和 Response),因此構造假請求以發送到您的頁面對像是極其困難的。

這使得單元測試網路表單頁面成為一場噩夢,因為它將所有測試與需要各種上下文設置相結合。

將其與 ASP.Net MVC 進行對比,您可以在其中模擬HttpContext!現在您的程式碼甚至不需要 Web 伺服器來為其提供上下文,您只需設置所需的位,並將模擬的上下文交給您的方法。

引用自:https://stackoverflow.com/questions/3259453