MVC 中的单元测试视图 - 确认部分视图已执行

Posted

技术标签:

【中文标题】MVC 中的单元测试视图 - 确认部分视图已执行【英文标题】:Unit test view in MVC - Confirm partial view is executed 【发布时间】:2015-10-05 11:52:00 【问题描述】:

我试图断言特定的局部视图是在如下场景中呈现的。

@if (Model.IsLoggedIn)

   @html.Partial("_LoggedIn")

else

   @Html.Partial("_NotLoggedIn")



var hc = new HomeController();

var actionResult = hc.Index(true);

有什么方法可以断言某个特定的视图名称已被渲染?

谢谢, 大卫

【问题讨论】:

也许这两个链接可以提供帮助; ***.com/questions/12370532/… 和 blog.davidebbo.com/2011/06/… 我已经尝试过 MvcContrib 测试库,但我遇到了与 FluentMVCTesting 相同的错误......我认为我将不得不在不同的庄园中处理它...... 第二个链接建议在部分中渲染某种“令牌”并在渲染结果中搜索它。不过可能不是最优雅的解决方案。 是的 - 我想过这种方法,但我不想用数据污染我的观点,所以我可以在单元测试中专门搜索它:) 【参考方案1】:

您可以使用FluentMVCTesting 来断言呈现的视图。

var hc = new HomeController();

hc.WithCallTo(c => c.Index(true))
    .ShouldRenderPartialView("_LoggedIn");

【讨论】:

您好,感谢您的回复 - 我收到错误消息“预期的操作结果是 PartialViewResult,但收到了 ViewResult。” ...因为我从主调用返回 ViewResult - 不是部分视图...我改为使用“ShouldRenderView”方法,但由于“索引”中呈现的实际视图名称而失败。 @DavidMcEleney 你是对的。我看不到专门针对您的场景的方法。

以上是关于MVC 中的单元测试视图 - 确认部分视图已执行的主要内容,如果未能解决你的问题,请参考以下文章

单元测试从启动视图控制器错误地执行代码

消除部分视图 MVC 3 razor 中的重复 ID

视图验证的MVC最佳做法?

如何在 MVC 的单个视图中制作插入表单和显示来自数据库的数据的表?

在 ExtJS 4 MVC 中查看单元

带有控制器 MVC c# 的部分视图