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 4中选择自动完成文本字段值时进行另一个
- asp.net-mvc-3 – 从View中访问RouteData.Values的最简单的
- asp.net-mvc – .input-validation-error为表单重新显示失败
- asp.net-mvc-3 – 不能将lambda表达式转换为’string’类型
- asp.net-mvc-4 – MVC 4中的ClientValidationEnabled和Unob
- asp.net-mvc – ASP.NET MVC:如何在localhost上自动禁用[R
- asp.net-mvc – 在控制器的OnException中确定结果类型
- asp.net – 如何在.aspx页面中访问c#变量的值?
- asp.net核心 – 无法在IISExpress中启动ASP.NET Core RC2 W
- asp.net-mvc – 如何构建URL路由?
- 如何检测ASP.NET应用程序中的SqlServer连接泄漏?
- asp.net – 自定义控件变为通用的“UserControl”
- asp.net – 在Web部署之外应用Web.Config转换
- asp.net – 脚本管理器控件实际上是做什么的?
- 在ASP.net C#中伪造浏览器请求
- 如何为ASP.NET_SessionId cookie设置HttpOnly?
- asp.net-mvc – 如何在ASP.NET MVC中阻止JSON序列
- asp.net-mvc – 重新安装Microsoft Visual Studi
- ASP.net会话状态服务信息
- asp.net-mvc – 将asp.net服务器参数传递给Angul
