2013-07-31 22 views
5

Moja strona ma następujące pola ukrytegoJak mogę przetestować widoki MVC?

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

mojego kontrolera

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

Chcę być w stanie sprawdzić, czy widok ma ukryte pole

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" />")); 
} 

pytanie brzmi: jak mogę renderować widok jako ciąg? Jakaś pomoc?

+0

To pytanie nie jest duplikatem, ale odpowiedź można znaleźć na stronie http://stackoverflow.com/questions/9243433/how-to-render-a-razor-view-to-a-string-in- asp-net-mvc-3. –

+0

Cytując wuja Boba (Robert Martin): "Na własne oczy" – MikeSW

+0

Myślę, że tutaj pytanie brzmi: czy naprawdę chcesz przetestować widok jednostki. –

Odpowiedz

2

Spójrz na to rozwiązanie, które posiada wsparcie dla poglądów brzytwa i standardowych widoków asp.net:

Render a view as a string

Moja druga rada dla Ciebie byłoby użyć parsera HTML, takich jak HtmlAgilityPack Żebyście może następnie wysłać zapytanie, aby znaleźć ukryte pole. Takie podejście jest lepsze, ponieważ testowanie string.contains spowoduje, że testy będą kruchliwe, gdy będziesz refaktoryzować swój HTML.

Powiązane problemy