2009-01-23 85 views
1

我有幾個使用相同控制器和模型的asp.net mvc網站。
這個共同的邏輯放在單獨的庫中。 這些庫使用HttpContext.Current.Session。我怎樣才能讓這些單元可測試? 我讀了StateValue,但不能完全理解它。我應該在哪裏得到這個StateValue的東西?這是我參考的lib嗎?如何依賴Session對象的單元測試庫

+0

結帳這篇文章: http://stackoverflow.com/questions/176347/asp-net-mvc-test-controllers-w-sessions-mocking – 2009-02-25 18:42:45

回答

1

你可以使用Mock傭工如看到here

+0

我發現在這種情況下使用Moq非常容易。 +1給你。 – Perpetualcoder 2009-01-23 21:13:02

1
  1. 代碼應該使用IHttpSessionState不HttpSessionState。
  2. 如果您查看IHttpSessionState的MSDN文檔,您會發現一個示例實現,您可以將其提升到您的單元測試項目中以創建模擬會話。
  3. 將獲得的Session代碼替換爲返回IHttpSessionState的靜態委託。
  4. 用一個使用HttpContext.Current.Session的函數初始化靜態委託。
  5. 在單元測試期間用您的IHttpSessionState的模擬實現替換委託。
+0

雖然這聽起來很有趣,但它需要我編寫一個完整的IHttpSessionState模擬。雖然我引用的這個StateValue似乎爲我提供了一個系統,我不必關心是否有會話。 – 2009-01-23 14:09:19