【问题标题】:Unit Testing the Views?对视图进行单元测试?
【发布时间】:2008-09-30 04:48:52
【问题描述】:

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

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

【问题讨论】:

  • 尝试使用 Visual Studio 中内置的重命名功能。这应该有助于为您解决所有这些参考问题。
  • 重命名功能?永远不要使用它;我使用 VA 类似的功能,它错过了所有的视图参考!哎哟

标签: asp.net-mvc unit-testing


【解决方案1】:

您可以使用Watin 编写集成测试,但如果您只是需要快速检查一下您的视图中是否有任何错误,您也可以尝试本文中提到的解决方案:How can I compile ASP.NET pages before loading them with a webserver。预构建您的 aspx 页面,一切顺利!

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      嗯,除了AugustLights 提到的Stephen Walther's blog entry,还有其他一些选项...

      Jim Zimmerman 在他的博客上谈到了他为动态预编译他的 ASP.NET MVC 视图页面以查找任何简单错误而编写的一些代码。

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

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

      【讨论】:

        【解决方案4】:

        T4MVC 避免魔法值

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

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

        对视图进行单元测试?测试静态非功能性的东西?

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

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

        【讨论】:

          【解决方案5】:

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

          我会再调查一下...这似乎是一个合理的做法...

          【讨论】:

            猜你喜欢
            • 2010-11-24
            • 1970-01-01
            • 2016-01-30
            • 1970-01-01
            • 2012-03-29
            • 2011-01-18
            • 1970-01-01
            • 2016-12-16
            • 1970-01-01
            相关资源
            最近更新 更多