如何在ASP.NET MVC中对视图进行单元测试?
我厌倦了在启动MVC项目时遇到黄色死亡屏幕,因为当我的控制器的Action
方法之一更改名称时,我忘记更新视图。
答案 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就是为了避免那些讨厌的魔法字符串。因此,无论何时重命名动作方法,您的编译都会中断,因为旧的动作引用将不再存在。
单元测试是关于测试应用程序的功能方面,而不是静态测试(在你的情况下会链接到其他人的情况下,这将是一些我不知道...页面上的CSS类或特定的HTML元素)。那只是不让我去对观点进行单元测试......
因此,单元测试您的视图从根本上解决您的问题。