运行单元测试项目时获取Web项目中的文件路径

时间:2012-05-30 07:03:40

标签: asp.net-mvc-2 file-io c#-3.0

实际上从单元测试项目执行以下代码时出现错误... 其中import是以下代码中的xml文件..

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

上面的代码出现在不同项目(类库)中的一个方法中,用于单元测试项目中的测试方法

在web项目中存在上述路径。 和

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

是null ..我无法获取文件的完整路径我猜bcos主机环境没有运行(web项目) 从webproject运行时,上面的代码工作正常,即它返回确切的路径。 而在从测试项目运行时返回null值。

请告诉我从测试项目运行时如何获取文件路径(web项目中存在文件)。

1 个答案:

答案 0 :(得分:1)

您可以将文件名作为参数传递给方法,而不是让方法尝试检索它:

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

现在,当您从Web层(控制器)调用此方法时,您可以传递如下文件名:

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

并且在测试项目内部,您可以传递您使用单元测试部署的其他文件。