В моих модульных тестах я обнаружил, что когда я возвращаюсь из действия контроллера, используя View () без имени представления, ViewResult.ViewName устанавливается в string.Empty. Для того чтобы это можно было установить, оно должно быть указано в качестве параметра для вызова View (). Например, дан следующий модульный тест:
[TextFixture]
public class MyControllerTests
{
[Test]
public void TestMyAction()
{
var controller = new MyController();
var result = controller.MyAction();
Assert.AreEqual("MyAction", result.ViewName);
}
}
Следующая реализация действия приведет к сбою модульного теста:
public class MyController : Controller
{
public ActionResult MyAction()
{
return View();
}
}
пока этот пройдет:
public class MyController : Controller
{
public ActionResult MyAction()
{
return View("MyAction");
}
}
Я использую ASP.NET MVC 2 (предварительная бета-версия) в .NET 4.0. Однако я не использую ничего специфичного для .NET 4.0. Я нахожу это поведение странным, потому что я думал, что ViewName является одним из надежных свойств, которые можно проверить в утверждениях модульных тестов.