2012-09-11 30 views
5

tengo una visión y tiene vista parcial de representación en el interior:Cómo probar Vista parcial se hizo en C# ASP .NET MVC

<div class="partialViewDiv"> 
    @Html.RenderPartial("partial", Model.SomeModelProperty); 
</div> 

y un controlador, que devuelve este punto de vista

public ActionResult Action() 
     { 
      ... 
      var model = new SomeModel(){SomeModelProperty = "SomeValue"} 
      return View("view", model); 
     } 

Como prueba de la vista se hizo lo que sé:

[TestMethod] 
public void TestView() 
{ 
    ... 
    var result = controller.Action(); 

    // Assert 
    result.AssertViewRendered().ForView("view").WithViewData<SomeModel>(); 
} 

pero cuando llamo

result.AssertPartialViewRendered().ForView("partial").WithViewData<SomeModelPropertyType>(); 

me sale este mensaje de error

Expected result to be of type PartialViewResult. It is actually of type ViewResult. 

¿Qué estoy haciendo mal?

Respuesta

3

¿Qué estoy haciendo mal?

Está probando el controlador: tales pruebas esencialmente se burlan de la vista y simplemente verifican que el controlador devuelve la vista esperada (y el modelo).

Porque la Vista "vista" que hace que el ParcialView sea "parcial" no está involucrado en las pruebas, por lo que no puede probar si está haciendo lo que espera.

En general, la mayoría de las personas no prueban las vistas; pero si quiere hacerlo, mire this blog o google para "vista de prueba de unidad MVC"

2

Cambio

return View(model); 

Para

return PartialView(model); 

Excepción lo dice todo. Espera un resultado de vista parcial, pero está devolviendo un resultado de vista.

+0

La aserción 'AssertPartialViewRendered(). ForView (" parcial ") ...' fallará aún cuando el controlador devuelva una vista " ver". – Joe

+0

No lo noté. Gracias –

Cuestiones relacionadas