asp.net-mvc – 查找单元测试方向,显示部分视图的控制器扩展
发布时间:2020-12-15 22:53:12 所属栏目:asp.Net 来源:网络整理
导读:正如标题所示,我正在寻找如何正确测试控制器扩展的方向.该扩展呈现一个部分视图,反过来我在 JSONResult中使用: public static string RenderPartialViewToString(this Controller controller,string viewName = null,object model = null) { if (string.IsN
正如标题所示,我正在寻找如何正确测试控制器扩展的方向.该扩展呈现一个部分视图,反过来我在
JSONResult中使用:
public static string RenderPartialViewToString(this Controller controller,string viewName = null,object model = null) { if (string.IsNullOrEmpty(viewName)) { viewName = controller.ControllerContext.RouteData.GetRequiredString("action"); } controller.ViewData.Model = model; using (StringWriter sw = new StringWriter()) { ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext,viewName); ViewContext viewContext = new ViewContext(controller.ControllerContext,viewResult.View,controller.ViewData,controller.TempData,sw); viewResult.View.Render(viewContext,sw); return sw.GetStringBuilder().ToString(); } } 使用示例 public JsonResult Foo() { var model = _repository.getSomeData(); return Json(new { html = this.RenderPartialViewToString("Index",model) },JsonRequestBehavior.AllowGet); } 我使用NUnit& MvcContrib test helper,但是当设置一个使用这个扩展的控制器时,我正在运行一个NRE.我假设控制器上下文设置不正确? 最终测试是在ViewEngines.Engines.FindPartialView上进行的.以下是失败测试的一部分: var routeData = new RouteData(); routeData.Values.Add("controller","someName"); routeData.Values.Add("action","someAction"); var builder = new TestControllerBuilder(); var controller = new ListingController(repository.Object); builder.RouteData = routeData; builder.InitializeController(controller); var result = controller.Foo(); 解决方法
您将不得不向ViewEngines.Engines集合添加一个嘲笑视图引擎,以便您可以模拟FindPartialView调用.这是Rhino Mocks的一个例子:
var view = MockRepository.GenerateStub<IView>(); var engine = MockRepository.GenerateStub<IViewEngine>(); var viewEngineResult = new ViewEngineResult(view,engine); engine .Stub(x => x.FindPartialView(null,null,false)) .IgnoreArguments() .Return(viewEngineResult); ViewEngines.Engines.Add(engine); 那么你可以声明view.Render方法被调用,拦截它的参数并写一些嘲笑的数据到这个写入器,最后断言你的控制器操作返回这个嘲笑的字符串. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net核心2.0发布到azure得到IIS 502.5错误
- 从ASP.NET中的web.sitemap文件构建菜单
- Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件
- asp.net – 连接到源文件XYZ的撤消管理器时出错
- asp.net-mvc – ASP.NET MVC绑定模型中的数组
- 在(asp.net wcf)Web应用程序中存储文件的最佳方法是什么
- asp.net-mvc – 保护MVC中的文件夹
- asp.net – 基于用户更改主题/ CSS
- asp.net-mvc – 如何在URL中没有控制器名称的单个控制器中获
- asp.net-core – 为什么.net core 2.1 SPA有3个不同的端口?
推荐文章
站长推荐
- asp.net – IIS中的自定义虚拟路径提供程序
- asp.net-mvc – 我必须做什么才能从MVC控制器重定
- asp.net-mvc – 查找单元测试方向,显示部分视图的
- asp.net-mvc – 被劫持的Umbraco HttpPost动作没
- asp.net-mvc – MVC .net属性上必需属性的布尔值
- asp.net – 如何在页面加载时以“添加新”模式进
- asp.net-core – 使用asp.net核心进行Windows身份
- asp.net-mvc-3 – 偶数和奇数表行与Razor
- asp.net – 如何循环通过WebForms中的数据,就像在
- asp.net-mvc – 使用MVC w / Bundles时CSS中的相
热点阅读