Estoy haciendo algunas pruebas sencillas de unidad de MS en mi controlador estándar, nada especial.¿La unidad de prueba de los resultados de mi método de controlador en un ViewName vacío?
Cuando miro la propiedad ViewName
, desde el objeto devuelto ViewResult
, es ""
(vacío).
estoy bajo la impresión de que la ViewName
está implicada por el nombre de la View
(como suggested by this MS article en pruebas controlador ASP.NET MVC).
Por cierto, cuando pruebo ViewData, está todo allí y es correcto.
Aquí está el código que tengo ...
public ActionResult Index(int? page, string tag)
{
if (page == null || page <= 0)
{
page = 1;
}
var viewData = new IndexViewData
{
... my property setters, etc ...
};
return View(viewData);
}
[TestMethod]
public void Index_Action_Should_Return_Index_View_For_Default_HomePage()
{
// Arrange.
var controller = PostController; // Wrapper, cause I use D.I.
// Act.
ViewResult viewResult = controller.Index(null, null) as ViewResult;
// Assert.
Assert.IsNotNull(viewResult);
Assert.AreEqual("Index", viewResult.ViewName); // This is false/fails.
var indexViewData = viewResult.ViewData.Model as IndexViewData;
Assert.IsNotNull(indexViewData); // This is true.
}
Heya. Hmm. no entiendo lo que estás diciendo "ViewName solo está presente cuando lo configura en ViewResult". Pensé que el marco automático establece esto? ¿Estás diciendo que no está configurado automáticamente? –
No. Por lo que puedo decir, ViewName es nulo a menos que lo establezcas específicamente. Creo que si es nulo o está vacío, saca el nombre de vista del nombre de la acción. – tvanfosson
>> Creo que si es nulo o está vacío, saca el nombre de la vista del nombre de la acción. << Hmm ... así que eso significa que no debería ser nulo, ¿verdad? –