我目前正在爲我的項目編寫單元測試,在規定的時間使用HttpContext.Current.User.Identity.Name
。不幸的是,我運行測試時無法進行測試,因爲HttpContext
爲空。模擬HttpContext.Current.User.Identity.Name
我已經嘗試了一些解決方案,我在互聯網上找到了像Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("rmllcc"), new string[0]);
但我無法獲得它的工作。
我正在使用Forms Authenticate system
,xUnit
和Moq
。我不是在測試控制器,而是一個Repository
,我只是在用戶每次使用特定方法時進行登錄。我怎麼能做到這一點?
所以你傳遞的HttpContext作爲參數傳遞給存儲庫? –
@DanielStackenland不,只是使用它。從我的控制器調用存儲庫,只記錄被記錄的用戶的值和時間。 – Sakuto
不要模擬'HttpContext'。而是創建一個你想要的抽象概念,並把它作爲一個服務傳遞給你的倉庫。關於你所問的問題,有很多問題,你會看到他們中的大多數人都提出這個問題。 – Nkosi