2012-05-30 185 views
1

其實即時通訊時,下面的代碼是從單元測試項目... 其中進口是在下面的代碼的XML文件執行得到錯誤..獲得Web項目的文件路徑

XmlTextReader importReader= new XmlTextReader(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Importcontent/import")); 

上述代碼存在於單元測試項目中的測試方法中使用的不同項目(類庫)中的一種方法中

其中上述路徑存在於Web項目中。 和的

System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Importcontent/import") 

值null..ie無法得到我猜BCOS的hostingenvironment文件的完整路徑沒有運行(網絡工程) 上面的代碼是從運行時工作正常webproject即它返回確切的路徑。 而從測試項目運行時返回空值。

請讓我知道如何從測試項目運行時獲取文件路徑(其中文件存在於web項目中)。

+0

這是一個有效的問題。答案要你解決它。有沒有找到解決方案? –

+0

@ shiv455我也在尋找類似的解決方案。你有沒有找到這個問題的任何答案?除了移動文件名到控制器,我也真的不想做 –

回答

1

你可以傳遞文件名作爲參數傳遞給方法,而不是方法試圖檢索它的:從你的web層(控制器)調用此方法時

public void SomeMethod(string filename) 
{ 
    using (XmlTextReader importReader = new XmlTextReader(filename)) 
    { 
     ... 
    } 
} 

現在,你可以通過類似的文件名這樣的:

public ActionResult Index() 
{ 
    string filename = Server.MapPath("~/Content/Importcontent/import"); 
    SomeMethod(filename); 
    ... 
} 

,並在測試項目中,你可以通過你已經部署了你的單元測試其他一些文件。

+0

實際上,我們只運行測試項目,我猜控制器不會在那裏在這種情況下....請更正,如果我錯了..實際上簡而言之,我想要的文件的路徑存在於web項目中,但未運行...當我們運行測試項目時 – shiv455

+0

在單元測試中,您將單元測試單獨測試的問題。將不會有任何控制器。 –

+0

是的,但方法s不存在於其他類圖書館項目中的任何控制器中。 – shiv455