掌握 ASP.NET MVC 單元測驗中的 HttpContext.Current 模擬
ASP.NET MVC 中的有效單元測試需要隔離控制器和函式庫行為,需要精確模擬 HttpContext
物件。 本文解決了在測試初始化方法中模擬 HttpContext.Current
的挑戰。
傳統方法,例如使用 FakeControllerContext
等幫助器類,為控制器設定模擬 HttpContext
。 然而,這種方法常常有缺陷,無法將模擬的範圍擴展到 Init
方法,外部函式庫也可能存取 HttpContext.Current
.
最優解直接操作HttpContext.Current
,替換IPrincipal
和IIdentity
物件。這確保了控制器和 Init
方法期間調用的任何庫之間的一致模擬,即使在控制台應用程式中也是如此。 以下程式碼片段說明了這一點:
<code class="language-csharp">HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) ); // Simulate a logged-in user HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] ); // Simulate a logged-out user HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
這種直接操作提供了對測試環境的全面控制,透過準確模擬HttpContext
來實現更強大、更有效的單元測試。
以上是如何在 ASP.NET MVC 單元測試中有效模擬 HttpContext.Current?的詳細內容。更多資訊請關注PHP中文網其他相關文章!