2009-02-05 13 views
24

Dada la siguiente clase controlador:¿Cómo obtener datos del modelo de un ViewResult en ASP.NET MVC RC1?

public class ProjectController : Controller 
{ 
    public ActionResult List() 
    { 
     return View(new List<string>()); 
    } 
} 

¿Cómo puedo obtener una referencia al objeto de modelo en la siguiente prueba de la unidad?

public class ProjectControllerTests 
{ 
    private readonly ProjectController controller; 

    public ProjectControllerTests() 
    { 
     controller = new ProjectController(); 
    } 

    [Fact] 
    public void List_Action_Provides_ProjectCollection() 
    { 
     var result = (ViewResult)controller.List(); 

     Assert.NotNull(result); 
    } 
} 

He intentado entrar en la acción del controlador para ver qué campos internos se estaban estableciendo, pero sin suerte.

Mi conocimiento de ASP.NET MVC es bastante limitado, pero supongo que no estoy configurando el controlador con un contexto correcto.

¿Alguna sugerencia?

Respuesta

37

Probar:

result.ViewData.Model 

espero que esto ayude.

+0

fsabau, tienes toda la razón. No puedo creer que me haya perdido eso. D'oh! –

6

En la versión Release Candidate del Asp.Net Mvc framework, el modelo está disponible a través de la propiedad "Modelo" del objeto ViewResult. He aquí una versión más precisa de la prueba:

[Fact] 
public void List_Action_Provides_ProjectCollection() 
{ 
    //act 
    var result = controller.List(); 

    //assert 
    var viewresult = Assert.IsType<ViewResult>(result); 
    Assert.NotNull(result.ViewData.Model); 
    Assert.IsType<List<string>>(result.ViewData.Model); 
} 
Cuestiones relacionadas