首先的方法,我知道這個問題是危險地接近: How to MapPath in a unit test in C#C#單元測試:測試使用MapPath的
我希望但是,它有不同的解決方案。我的問題如下:
在我的代碼我有一個對象,需要驗證。我正在爲每個驗證方法創建單元測試,以確保它正確驗證。我正在創建模擬數據並將其加載到對象中,然後驗證它。問題在於,在驗證中,當發生錯誤時,會分配錯誤代碼。此錯誤代碼用於使用Server.MapPath從xml文件收集關於錯誤的信息。但是,在嘗試獲取xml文件時,會拋出異常,表示無法找到該文件。
由於MapPath在我的驗證代碼中,而不是我的單元測試,我該如何讓我的單元測試識別路徑?這個問題有意義嗎?
錯誤行(在我的驗證代碼不我的單元測試):
XDocument xdoc = XDocument.Load(HttpContext.Current.Server.MapPath("App_Data/ErrorCodes.xml"));
簡化:單元測試在我的程序調用使用Server.Mappath然後失敗調用的方法。
GetPath()應該可能是虛擬的。 – dahlbyk 2009-08-11 17:31:56
@Dan HttpContext.Current。當我們從TestProject運行時返回null。任何方式來避免這種情況? – 2016-05-30 06:59:43
@JibinMathew是的,不要使用'HttpContext.Current'。我知道這聽起來很滑稽,但確實如此。通常,不要模擬你不擁有的類,但是你可以爲'HttpContextBase'編寫一個包裝類來實現你想要的功能。 – 2016-05-31 11:50:37