2013-07-31 39 views
5

我的頁面有以下隱藏字段我如何測試MVC Views?

<%= Html.Hidden("SessionId", Model.Form.UniqueSessionId) %> 

我的控制器

public class SomeController 
{ 
    public ActionResult Index() 
    { 
     var somemode = new GetSomeModel(); 
     return View(somemodel); 
    } 
} 

我想能夠測試視圖是否有隱藏字段

protected SomeController controller; 

protected void SetupController() 
{ 
    controller = new SomeController() 
} 

[Test] 
public void view_has_hidden_field_for_SessionId() 
{ 
    ViewResult result = controller.Index() as ViewResult; 
    Assert.IsTrue(result.contains("<input type="hidden" id="SessionId" />")); 
} 

的問題是:我如何渲染視圖爲字符串?任何幫助?

+0

這個問題不是重複的,但答案可以在http://stackoverflow.com/questions/9243433/how-to-render-a-razor-view-to-a-string-in- ASP淨MVC-3。 –

+0

引用叔叔鮑勃(羅伯特馬丁):「用你的眼睛」 – MikeSW

+0

我想這裏的問題是:你真的想單元測試一個視圖。 –

回答

2

看看這個解決方案,它具有剃刀的觀點和標準asp.net的觀點支持:

Render a view as a string

我的其他意見,你會使用一個HTML解析器如HtmlAgilityPack讓你然後可以查詢它來查找您的隱藏字段。這種方法更好,因爲當你重構你的html時,測試string.contains會使你的測試變得脆弱。