tags:

views:

75

answers:

2

Hi,

in my unit test, the ViewResult.ViewName property is always empty when i use the action name for the view:

return View(model);
or
return View();

Is that by design?

+1  A: 

Looks like it is indeed:

protected internal ViewResult View()
{
    return this.View(null, null, null);
}

protected internal virtual ViewResult View(string viewName, 
    string masterName, object model)
{
    if (model != null)
    {
        base.ViewData.Model = model;
    }
    ViewResult result = new ViewResult();
    result.ViewName = viewName;
    result.MasterName = masterName;
    result.ViewData = base.ViewData;
    result.TempData = base.TempData;
    return result;
}
Anton Gogolev
Huh? then where does it get my viewname from?
Michel
+1  A: 

Yes it is by design:

protected internal ViewResult View()
{
    return this.View(null, null, null);
}

Checkout MVCContrib.TestHelper for better syntax:

// act
var actual = controller.Index();

// assert
actual.AssertViewRendered();
Darin Dimitrov
Do you know where does it get my viewname from?
Michel
From the name of the action that is being executed.
Darin Dimitrov