我有幾個使用相同控制器和模型的asp.net mvc網站。
這個共同的邏輯放在單獨的庫中。 這些庫使用HttpContext.Current.Session。我怎樣才能讓這些單元可測試? 我讀了StateValue,但不能完全理解它。我應該在哪裏得到這個StateValue的東西?這是我參考的lib嗎?如何依賴Session對象的單元測試庫
1
A
回答
1
1
- 代碼應該使用IHttpSessionState不HttpSessionState。
- 如果您查看IHttpSessionState的MSDN文檔,您會發現一個示例實現,您可以將其提升到您的單元測試項目中以創建模擬會話。
- 將獲得的Session代碼替換爲返回IHttpSessionState的靜態委託。
- 用一個使用HttpContext.Current.Session的函數初始化靜態委託。
- 在單元測試期間用您的IHttpSessionState的模擬實現替換委託。
+0
雖然這聽起來很有趣,但它需要我編寫一個完整的IHttpSessionState模擬。雖然我引用的這個StateValue似乎爲我提供了一個系統,我不必關心是否有會話。 – 2009-01-23 14:09:19
1
只是爲了引導人們走出這個天坑(它是作爲.NET 3.5)的 - 不要碰IHttpSessionState的嘲諷和測試的目的:
結帳這篇文章: http://stackoverflow.com/questions/176347/asp-net-mvc-test-controllers-w-sessions-mocking – 2009-02-25 18:42:45