0
我有一個類庫,它有一個基於模板發送電子郵件的方法。我通過訪問該模板以下幾點:Moq'ing HttpContext.Current
HttpContext.Current.Server.MapPath("email template path");
現在,當談到寫我的單元測試中,我希望能夠模擬出「當前上下文」,我曾嘗試使用MVCMockHelpers但「當前」屬性總是返回null。
是否有可能嘲笑這個屬性?如果是這樣,我該怎麼辦呢?
更具體地說,該類應該像路徑提供程序類一樣依賴於它,因爲它訪問靜態Current屬性的原因是調用HttpServerUtility MapPath方法。如果代碼正在訪問其他Current屬性,那麼它需要升級並抽象出HttpContext本身。 –
被引用的文章創建一個假的HttpContextBase而不是一個HttpContext。 – ThomasArdal
無處不在我在遺留代碼中發現了這個問題,在消費代碼中切換到使用'HttpContextBase'已經很簡單了。之後,如果你曾經使用舊的'HttpContext',你可以簡單地用'new HttpContextWrapper(someHttpContext)'包裝它,然後它將作爲'HttpContextBase'工作。也就是說,正如Daz/Sixto說的那樣,如果可以幫助的話,那麼肯定值得移除對任何類型的'HttpContext *'的依賴,以支持你需要的確切項目。 – patridge