【问题标题】:Test Views in ASP.NET MVC2 (ala RSpec)在 ASP.NET MVC2 (ala RSpec) 中测试视图
【发布时间】:2011-02-16 09:14:06
【问题描述】:

我真的很怀念独立测试视图控制器的能力。一路RSpec does it

我想做的是在渲染视图上执行断言(不涉及控制器!)。为了做到这一点,我应该提供所需的模型、ViewData 以及可能来自 HttpContextBase 的一些详细信息(我们什么时候可以摆脱 HttpContext!)。

到目前为止,我还没有找到任何允许这样做的东西。此外,它可能在很大程度上取决于所使用的 ViewEngine。

视图可能包含的内容列表如下:

  • 部分视图(可能嵌套很深)。
  • 母版页(或其他视图引擎中的类似页面)。
  • HTML 帮助程序生成链接和其他元素。
  • 一般来说,几乎所有常识范围内的东西 :)。

另外请注意,我不是在谈论客户端测试,因此 Selenium 根本与它无关。这只是简单的 .NET 测试。

那么有什么选项可以实际进行视图测试吗?

谢谢,
德米特里。

【问题讨论】:

    标签: asp.net-mvc unit-testing asp.net-mvc-2 views rspec


    【解决方案1】:

    测试完整视图的主要问题是 asp.net 视图引擎在提供的上下文中调用 Response.Write / 而不是在提供的编写器上。

    上面不是测试部分视图的情况,所以对于那些你可以使用这个解决方案的人: http://www.brightmix.com/blog/renderpartial-to-string-in-asp-net-mvc/

    还有其他视图引擎允许您测试视图,例如 Spark。

    ps。 asp.net mvc 中的概念是您应该能够使用 ViewEngine 测试视图,但据我了解,asp.net mvc 团队没有解决现有的 asp.net 引擎限制以便能够这样做为他们的视图引擎。

    【讨论】:

    • 我一定会研究 Spark。我以前使用过 NHaml,但不确定是否可以使用它进行测试。感谢您的回答。
    【解决方案2】:

    您可能想查看 Eric Hexter 和 MVCContrib 的人正在开发的 UI 测试助手。我没有机会深入研究它,但它可能会对你有所帮助。我发现这个链接显示了一些语法:http://codepaste.net/cw8ie4

    我很想知道你发现了什么,因为我很快也会这样做。

    【讨论】:

    • Brian,MvcContrib.TestHelper.Ui 允许使用 WatiN 或 Selenium 等框架进行集成测试。我不需要那个。我真的只需要渲染视图(将所需的模型传递给 i)并断言其内容(最好使用 CSS/XPath 选择器)。
    • 我明白了。但是,这让我想到了另一个问题。那时你会测试什么?在我看来,您将测试渲染引擎是否有效。您只需要信任框架的意义何在?
    • 我将测试生成的 HTML,确保呈现正确的 FORM、INPUT 和其他元素并且有效。这样我就可以确定,例如,在设计师应用新设计后页面不会中断。
    【解决方案3】:

    有兴趣知道您是否找到任何适用于 .Net 的内容。我们当前的应用程序是 WPF,但我们坚持相信 Cucumber 会在所有功能中触摸我们的视图......所以是的,这很糟糕。希望你能找到一些东西并更新我们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多