我想弄清楚如何單元測試我自己持續到會話狀態的對象。如何單元測試會話狀態
控制器做類似...
[HttpPost]
public ActionResult Update(Account a)
{
SessionManager sm = SessionManager.FromSessionState(HttpContext.Current.Session);
if (a.equals(sm.Account))
sm.Account = a;
return View("View", a);
}
和會話管理器本身的序列化會話狀態
public class SessionManager
{
public static SessionManager FromSessionState(HttpSessionStateBase state)
{
return state["sessionmanager"] as SessionManager ?? new SessionManager();
}
public Guid Id { get; set; }
public Account Account { get; set; }
public BusinessAssociate BusinessAssociate {get; set; }
}
我在想,有兩種方法,以單元測試...
在靜態實例化器中傳遞會話狀態引用然後恢復f rom那。這將允許我嘲笑這個參數,並且一切都將是黃金。
公共靜態SessionManager FromSessionState(HttpSessionStateWrapper會話) { 返回會話[ 「sessionmanager」]作爲SessionManager ??新的SessionManager(); }
爲SessionManager創建一個模擬並用它來測試控制器。
這是很好的建議。我一直很難寫單元測試,所以任何簡單的事情都很好。我還玩弄了一個獨立的類,它將被用來將會話管理器保持到會話狀態。我認爲這可能會將問題分開,以便會話管理器只保存我的臨時對象,然後sessionrepository負責保存它。 – yamspog 2010-09-18 17:25:35