asp.net-mvc – 单元测试我的控制器方法导致一个空的ViewName?
发布时间:2020-05-23 10:28:59 所属栏目:asp.Net 来源:互联网
导读:我对我的标准做一些简单的MS单元测试,没有什么特别的控制器。 当我检查ViewName proprty,从返回的ViewResult对象,它的“”(空)。 我的印象是ViewName是由视图的名称暗示的(作为ASP.NET MVC控制器测试的suggested by this MS article)。 BTW,当我测试的Vie
|
我对我的标准做一些简单的MS单元测试,没有什么特别的控制器。 当我检查ViewName proprty,从返回的ViewResult对象,它的“”(空)。 我的印象是ViewName是由视图的名称暗示的(作为ASP.NET MVC控制器测试的suggested by this MS article)。 BTW,当我测试的ViewData,它的所有和正确的。 这里是我有的代码… public ActionResult Index(int? page,string tag)
{
if (page == null || page <= 0)
{
page = 1;
}
var viewData = new IndexViewData
{
... my property setters,etc ...
};
return View(viewData);
}
[TestMethod]
public void Index_Action_Should_Return_Index_View_For_Default_HomePage()
{
// Arrange.
var controller = PostController; // Wrapper,cause I use D.I.
// Act.
ViewResult viewResult = controller.Index(null,null) as ViewResult;
// Assert.
Assert.IsNotNull(viewResult);
Assert.AreEqual("Index",viewResult.ViewName); // This is false/fails.
var indexViewData = viewResult.ViewData.Model as IndexViewData;
Assert.IsNotNull(indexViewData); // This is true.
}
解决方法ViewName仅在您在ViewResult中设置时才存在。如果您的View名称与您的控制器名称匹配,那么我将检查以确保ViewName为空或为空,因为这将是(IMO)正确的行为,因为您不想在视图上设置名称。我只检查ViewName是否设置,当我打算返回的视图不匹配的操作 – 例如,当返回“错误”视图,例如。编辑:以下是ViewResultBase.cs(从RC1,我没有在我的Macintosh RTW的源)的ExecuteResult的源。正如你可以看到,它检查ViewName是否已被直接设置,如果没有,它从控制器上下文的路由数据中的操作中拉出。这只发生在ExecuteResult,它在控制器的操作完成后被调用。 public override void ExecuteResult(ControllerContext context) {
if (context == null) {
throw new ArgumentNullException("context");
}
if (String.IsNullOrEmpty(ViewName)) {
ViewName = context.RouteData.GetRequiredString("action");
}
ViewEngineResult result = null;
if (View == null) {
result = FindView(context);
View = result.View;
}
ViewContext viewContext = new ViewContext(context,View,ViewData,TempData);
View.Render(viewContext,context.HttpContext.Response.Output);
if (result != null) {
result.ViewEngine.ReleaseView(context,View);
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.NET MVC:添加将DisplayName合并到自定
- .net – 排除某些页面使用HTTPModule
- asp.net-web-api – 将Application Insight与ASP API Core结
- asp.net-mvc – ASP.NET MVC模型在编辑器模板中绑定IList
- ASP.NET缓存管理的几种方法
- asp.net-mvc-3 – ASP.NET MVC 3 – 验证问题
- 在IIS / ASP.Net中的.NET 1.1应用程序中创建.NET 3.0子应用
- asp.net-core – 在定位.NET Core时引用旧的(完整的.NET Fr
- ASP.NET中的基页
- asp.net-mvc-4 – MVC 4 DropDownListFor错误 – 没有具有密
推荐文章
站长推荐
- asp.net-mvc – 在Umbraco 6.1.1 MVC 4中,如何使
- asp.net-mvc – 重定向页面的TempData?
- 为什么私有事件处理程序在ASP.NET中不起作用
- asp.net – 使用UpdatePanel的CollectionPager问
- asp.net会员提供者Guid userID
- 什么是ASP.NET中的CRON作业? – C#
- asp.net – 跟踪像素或javascript包括?
- asp.net-mvc – ASP.Net MVC:dbml文件的最佳实践
- asp.net – Intranet / Internet的Windows身份验
- asp.net – 在开发系统上禁用OutputCache
热点阅读
