我做嘲笑的MVC控制器使用FakeItEasy會話對象返回正確的值訪問會話對象將返回正確的值:ASP.NET MVC FakeItEasy嘲笑會話不會在單元測試
public ActionResult Index()
{
var value = Session["Key"]; // value = "SomeValue" like it is supposed to
...
}
在會話通過這樣的二傳手使用相同的密鑰設置控制器以後,會出現問題:
Session["Key"] = "SomeOtherValue";
然後當使用鍵則返回錯誤值:
var value = Session["Key"]; // value = "Key"
嘲笑的會話不回我的嘲笑值了,並沒有任何回報的新的價值,而是它返回密鑰(WTF ?!)。我究竟做錯了什麼?當使用setter時,模擬對象實際發生了什麼?
感謝您的迴應布萊爾,我試過你是解決方案,但我得到了:_「在System.Web中發生類型'System.NotImplementedException'的異常。dll但沒有在用戶代碼中處理 其他信息:該方法或操作未實現。「_ 執行session [」key2「] =」value2「時發生此問題 – AfroMogli
啊,drat。我自己的會話任務,而我寫的解決方案。我沒有意識到'HttpSessionStateBase.Item'總是拋出一個NotImplementedException(http://msdn.microsoft.com/en-us/library/cc647353(v=vs.110)。 aspx)。對不起, 在這種情況下,我不會退回到基本實現,而是想實現自己的後備存儲 - 只需在測試類上拋出一個Dictionary並設置setter/getter並 我無法在此時運行Visual Studio_,但稍後會修改答案,如果其他人沒有這樣做。 –
真棒,它工作正常! nk Blair – AfroMogli