ASP.NET MVC2中的测试视图(ala RSpec)

时间:2010-05-06 12:28:18

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

我真的非常缺乏独立测试视图控制器的能力。方式RSpec does it

我想要做的是在渲染视图上执行断言(其中不涉及控制器!)。为了做到这一点,我应该提供所需的Model,ViewData以及 HttpContextBase 中的一些细节(我们何时会摆脱HttpContext!)。

到目前为止,我还没有发现允许这样做的任何事情。它也可能在很大程度上取决于所使用的ViewEngine。

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

  • 部分观点(可能深层嵌套)。
  • 母版页(或其他视图引擎中的类似文件)。
  • 生成链接和其他元素的Html助手。
  • 一般来说,几乎所有常识都是:)。

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

那么有没有选择真正进行视图测试?

谢谢,
德米特里。

3 个答案:

答案 0 :(得分:2)

测试完整视图的主要问题是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引擎限制能够这样做对于他们的视图引擎。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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