asp.net – 如何单元测试使用HostingEnvironment.MapPath的代码
发布时间:2020-05-23 17:33:18 所属栏目:asp.Net 来源:互联网
导读:我有一些使用HostingEnvironment.MapPath的代码,我想进行单元测试。 如何设置HostingEnvironment,以便在我的单元测试(mstest)项目中返回一个路径,而不是空值? 为什么在ASP.NET MVC应用程序中有一个依赖于HostingEnvironment.MapPath的代码,您可以访问像H
|
我有一些使用HostingEnvironment.MapPath的代码,我想进行单元测试。 如何设置HostingEnvironment,以便在我的单元测试(mstest)项目中返回一个路径,而不是空值? 解决方法为什么在ASP.NET MVC应用程序中有一个依赖于HostingEnvironment.MapPath的代码,您可以访问像HttpServerUtilityBase这样的对象,这样可以实现这一点,哪些可以容易地被嘲笑和单元测试?让我们举个例子:一个使用我们要单元测试的抽象服务器类的控制器动作: public class HomeController : Controller
{
public ActionResult Index()
{
var file = Server.MapPath("~/App_Data/foo.txt");
return View((object)file);
}
}
现在,有很多方法来单元测试这个控制器的动作。我个人喜欢使用MVcContrib.TestHelper。 但是让我们看看我们如何使用一个嘲弄的框架来开箱即可。这个例子我使用Rhino Mocks: [TestMethod]
public void Index_Action_Should_Calculate_And_Pass_The_Physical_Path_Of_Foo_As_View_Model()
{
// arrange
var sut = new HomeController();
var server = MockRepository.GeneratePartialMock<HttpServerUtilityBase>();
var context = MockRepository.GeneratePartialMock<HttpContextBase>();
context.Expect(x => x.Server).Return(server);
var expected = @"c:workApp_Datafoo.txt";
server.Expect(x => x.MapPath("~/App_Data/foo.txt")).Return(expected);
var requestContext = new RequestContext(context,new RouteData());
sut.ControllerContext = new ControllerContext(requestContext,sut);
// act
var actual = sut.Index();
// assert
var viewResult = actual as ViewResult;
Assert.AreEqual(viewResult.Model,expected);
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-identity – 保护整个ASP.NET 5 MVC 6应用程序
- asp.net-mvc – 如何在ASP.NET MVC视图中访问路由参数?
- asp.net-mvc-3 – 子动作是否与其“父母”动作共享相同的Vi
- asp.net – WebAPI返回XML
- asp.net – 为什么Web API请求的正文读取一次?
- 在asp.net后面的代码中创建javaScript变量
- asp.net下创建、查询、修改带名称空间的 XML 文件的例子
- asp.net-mvc – UIHint属性在MVC中
- asp.net-mvc – 如何使用ASP.NET MVC实现自定义缓存提供程序
- asp.net-mvc – MVC,不再“假设”使用HttpContext.Current了
推荐文章
站长推荐
- asp.net – 实体框架CTP5,代码优先.可选的导航属
- 如何使用WebAPI没有ASP.NET MVC?
- asp.net-mvc-3 – 剃刀中的部分的默认内容
- ASP.NET应用程序通过Windows身份验证或表单身份验
- 字符串 – 自定义Asp.net MVC 3编辑器模板没有被
- asp.net-mvc – View中的意外NullReferenceExcep
- asp.net-mvc – 为什么HttpContext.Current在asp
- asp.net-mvc-routing – ASP.NET MVC区域:如何隐
- asp.net-mvc-4 – ASP.NET MVC 4通过ActionLink传
- 将NUnit添加到ASP.NET MVC测试框架的选项
热点阅读
