2010-05-06 79 views
9

我真的很想念測試視圖獨立控制器的獨立的能力。方式RSpec does itASP.NET MVC2中的測試視圖(ala RSpec)

我想要做的是在渲染視圖(其中不涉及控制器!)執行斷言。爲了做到這一點,我應該提供所需的Model,ViewData以及HttpContextBase(我們何時會擺脫HttpContext!)的一些細節。

到目前爲止,我還沒有發現任何可以做到這一點。此外,它可能很大程度上取決於正在使用的ViewEngine。

的那個觀點可能包含的東西名單是:

  • 部分視圖(可深度嵌套)。
  • 母版頁(或其他視圖引擎中的類似內容)。
  • Html助手生成鏈接和其他元素。
  • 一般幾乎所有的常識範圍:)。

另外請注意,我不是在談論客戶端測試,因此Selenium根本就沒有涉及到它。這只是簡單的.NET測試。

那麼有沒有任何選項可以實際進行視圖測試?

謝謝,
德米特里。

回答

2

測試完整視圖的主要問題是,asp.net視圖引擎在提供的上下文中調用Response.Write而不是在提供的編寫器上。

上面的是不用於測試的局部視圖的情況下,所以對於那些可以使用此解決方案: http://www.brightmix.com/blog/renderpartial-to-string-in-asp-net-mvc/

還有其他的視圖引擎那些允許您測試視圖即火花。

PS。在asp.net mvc中的概念是,你應該能夠使用ViewEngine來測試視圖,但據我所知,asp.net mvc團隊並沒有圍繞現有的asp.net引擎限制工作,以便能夠這樣做爲他們的視圖引擎。

+0

我一定會考慮Spark。我之前使用過NHaml,但不能確定測試可以完成。感謝你的回答。 – 2010-05-26 22:49:36

1

你可能要檢查出的UI測試助手埃裏克赫克斯特與MVCContrib的傢伙正在研究。我沒有機會深入研究它,但它可能會幫助你。我發現這個鏈接,顯示的是一些語法:http://codepaste.net/cw8ie4

我很想知道你發現了什麼了,我會做這個很快也。

+0

布賴恩,在'MvcContrib.TestHelper.Ui'允許使用像華廷或硒的框架集成測試。我不需要那個。我真的只需要渲染視圖(將需要的模型傳遞給i)並在其內容上聲明(最好使用CSS/XPath選擇器)。 – 2010-05-18 23:09:50

+0

我明白了。但是,這導致我另一個問題。那時你會做什麼測試?在我看來,你會測試渲染引擎的工作原理。你只需要相信該框架的重點在哪裏? – 2010-05-19 20:35:56

+2

我將測試生成的HTML,確保正確的FORM,INPUT和其他元素被呈現並且有效。通過這種方式,我可以確定,例如,在設計師應用新設計後,頁面不會中斷。 – 2010-05-19 22:44:51

0

有興趣知道,如果你找到任何.Net這樣做。我們目前的應用程序是WPF,但我們堅持相信黃瓜觸及我們的所有功能中的視圖...所以是的,這很糟糕。希望你找到一些東西並更新我們。