2013-07-31 12 views
5

La mia pagina è seguendo Campo nascostoCome posso testare le viste MVC?

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

mio controller

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

Voglio essere in grado di verificare se la vista ha il campo nascosto

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

La domanda è: come posso renderizza la vista come stringa? Qualsiasi aiuto?

+0

Questa domanda non è un duplicato, ma la risposta può essere trovata all'indirizzo http://stackoverflow.com/questions/9243433/how-to-render-a-razor-view-to-a-string-in- asp-net-mVC-3. –

+0

Per citare lo zio Bob (Robert Martin): "Con i tuoi occhi" – MikeSW

+0

Penso che la domanda qui sia: vuoi davvero testare una vista unitaria. –

risposta

2

Date un'occhiata a questa soluzione, che ha il supporto per le viste di rasoio e vista asp.net standard:

Render a view as a string

altro mio consiglio per voi sarebbe quella di utilizzare un parser HTML come HtmlAgilityPack modo che si può quindi interrogarlo per trovare il tuo campo nascosto. Questo approccio è migliore poiché testare string.contains renderà i test fragili quando si refactoring il tuo html.

Problemi correlati