asp.net-mvc – ASP.NET MVC:Mock controller.Url.Action
我的ASP.NET MVC应用程序中的菜单的URL为控制器/操作生成。所以他们打电话
controller.Url.Action(action,controller) 现在,我如何使这项工作在单元测试? var controller = new TestControllerBuilder().CreateController<OrdersController>(); 但是无论我尝试使用它,我得到controller.Url.Action(操作,控制器)失败与NullReferenceException因为Url == null。 更新:它不是关于如何拦截HttpContext。我以几种方式做到这一点,使用MVCContrib,Scott Hanselman的伪造例子,还有一个来自http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx的例子。这并不能帮助我,因为我需要知道什么是值得冒犯的… ApplicationPath?如何设置?是否需要匹配被叫控制器/动作?也就是说,Url.Action如何工作,如何满足? 此外,我知道我可以做IUrlActionAbstraction并与它一起去…但我不知道我想做这个。毕竟,我有MVCContrib / Mock全功能,为什么我需要另一个抽象。 解决方法
以下是如何使用MvcContrib的TestControllerBuilder来模拟UrlHelper:
var routes = new RouteCollection(); MvcApplication.RegisterRoutes(routes); HomeController controller = CreateController<HomeController>(); controller.HttpContext.Response .Stub(x => x.ApplyAppPathModifier("/Home/About")) .Return("/Home/About"); controller.Url = new UrlHelper( new RequestContext( controller.HttpContext,new RouteData() ),routes ); var url = controller.Url.Action("About","Home"); Assert.IsFalse(string.IsNullOrEmpty(url)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – ASP.NET MVC3 Fluent验证构造函数每次请求
- asp.net-mvc – 从业务层使用邮件库
- 在ASP.NET属性中组合字符串
- asp.net-mvc – 使用数字属性的MVC3 DataAnnotationsExtens
- asp.net – 如何在不使用global.asax的情况下添加Applicati
- Asp.Net中ajax+ashx使用详解
- asp.net-mvc – ASP.NET MVC – 单元测试过度杀毒? (TDD)
- asp.net-mvc – MVC 5:Asp.net身份:如何建模UserRole
- 线程退出.Net MVC控制台中的消息
- asp.net – Windows身份验证和网络服务帐户作为db_owner
- asp.net-mvc – ASP.NET MVC中的动态(运行时生成
- asp.net – 检查IE浏览器 – .NET
- asp.net-mvc – 注销asp.net mvc后,User.Identit
- asp.net – 无法获得typeahead.js基本示例
- ASP.NET Core 2.0 + EF6 + Linux&nbs
- asp.net – 使用HTML标记到web.config文件
- asp.net-mvc – 设计ASP.NET MVC 3站点以支持客户
- asp.net – 用户角色 – 为什么不存储在会话中?
- asp.net – 可以从外部xml文件读取web.config吗?
- ASP.NET 4.0中的不同服务器和客户端缓存策略