【问题标题】:Asp.Net MVC How to test that the view renderedAsp.Net MVC 如何测试视图是否呈现
【发布时间】:2010-05-31 12:12:01
【问题描述】:
你好
我想知道是否有更好的方法来测试在 MVC 中呈现的视图。
我在想也许我应该将视图呈现为字符串,但也许有更简单的方法?
基本上我想知道给定操作的视图是否已无错误地呈现
我已经在测试视图模型,但我想看到渲染视图给出正确的 ViewData.Model 工作
【问题讨论】:
标签:
asp.net-mvc
unit-testing
【解决方案1】:
使用MvcContrib TestHelpers 库执行断言,即您的操作正在返回特定视图:
var sampleController = new SampleController();
sampleController.New().AssertViewRendered().ForView("New").WithViewData<SomeModel>();
要进行断言以确保您将正确的数据返回到视图,请从 ActionResult 中拉取模型:
var result = (ViewResult)sampleController.New();
((SomeModel)result.ViewData.Model).SomeProperty.ShouldNotBeNull();
这是您的单元测试应该做的。
对于端到端自动化功能/GUI 测试,您可能需要考虑使用像 Selenium 这样的工具。
【解决方案2】:
您可以为您的项目启用视图编译。这样,除非您解决问题,否则项目将无法编译。在 .csproj 文件中编辑这一行:
<MvcBuildViews>false</MvcBuildViews> 使用真而不是假
你也可以使用 ELMAH(安装它查看 NuGet),你可以通过电子邮件接收详细的错误(包括 YSOD)。
Source