单元测试视图?

时间:2008-09-30 04:48:53

标签: asp.net-mvc unit-testing

如何在ASP.NET MVC中对视图进行单元测试?

我厌倦了在启动MVC项目时遇到黄色死亡屏幕,因为当我的控制器的Action方法之一更改名称时,我忘记更新视图。

5 个答案:

答案 0 :(得分:8)

您可以使用Watin编写集成测试,但如果您只是需要快速检查以查看视图中是否有任何错误,您还可以尝试本文中提到的解决方案:{{3} }。预建你的aspx页面,你很高兴!

答案 1 :(得分:6)

在项目文件中将<MvcBuildViews>设置为true,编译器会在您构建时让您知道此类问题。

这假设您的项目文件还包含以下部分(在ASP.NET MVC 1.0中自动添加)

<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
  <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>

答案 2 :(得分:3)

好吧,除了Stephen Walther's blog entry所指出的AugustLights之外,还有一些其他选项......

Jim Zimmerman在他的博客上讨论了他编写的动态预编译ASP.NET MVC视图页面以找出任何简单错误的代码。

您还可以使用具有预编译功能的Spark View Engine,而不是使用ASP.NET MVC启用的默认ASPX视图引擎。这是一个非常戏剧性的变化,可能不适合你;)

如果您想了解有关Spark或其他View引擎的更多信息,Scott Hanselman有一篇很棒的博客文章描述了它们以及它们的外观。

答案 3 :(得分:1)

S上。 Walther有一些解决这个问题的方法,但看起来有点麻烦...... http://stephenwalther.com/archive/2008/07/26/asp-net-mvc-tip-25-unit-test-your-views-without-a-web-server

我会更多地研究这个...似乎是一件合理的事情......

答案 4 :(得分:1)

T4MVC以避免魔法值

你的问题归结为魔术字符串不是。那么为什么不尝试解决这些问题?

T4MVC就是为了避免那些讨厌的魔法字符串。因此,无论何时重命名动作方法,您的编译都会中断,因为旧的动作引用将不再存在。

单元测试视图?测试静态非功能性东西?

单元测试是关于测试应用程序的功能方面,而不是静态测试(在你的情况下会链接到其他人的情况下,这将是一些我不知道...页面上的CSS类或特定的HTML元素)。那只是不让我去对观点进行单元测试......

因此,单元测试您的视图从根本上解决您的问题。