В своих модульных тестах я обнаружил, что когда я возвращаюсь из действия контроллера с помощью 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 является одним из надежных свойств, которые можно проверить в утверждениях модульных тестов.