Sto facendo alcuni semplici test delle unità MS sul mio standard, niente controller speciale.L'unità testando il metodo del mio controller genera un ViewName vuoto?
Quando controllo il proprietario dall'oggetto ViewResult
restituito, è ""
(vuoto).
Ho l'impressione che il ViewName
sia implicito dal nome dello View
(come suggested by this MS article sul test del controller ASP.NET MVC).
BTW, quando eseguo il test di ViewData, è tutto lì e corretto.
Ecco il codice che ho ...
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. non capisco quello che stai dicendo. "Il ViewName è presente solo quando lo si imposta in ViewResult". Pensavo che il framework auto lo imposta? Stai dicendo che non è impostato automaticamente? –
No. Per quanto posso dire che il ViewName è nullo a meno che non lo si imposta in modo specifico. Credo che se è nullo o vuoto, tira il nome della vista dal nome dell'azione. – tvanfosson
>> Credo che se è nullo o vuoto, tira il nome della vista dal nome dell'azione. << Hmm .. quindi questo significa che non dovrebbe essere nullo, giusto? –