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 中的单元测试视图 - 确认部分视图已执行的主要内容,如果未能解决你的问题,请参考以下文章