В моих модульных тестах я обнаружил, что когда я возвращаюсь из действия контроллера, используя 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");
}
}
Я m с использованием ASP.NET MVC 2 (pre-beta) на .NET 4.0. Однако я не использую ничего особенного .NET 4.0. Я считаю это поведение странным, потому что я думал, что ViewName является одним из надежных свойств, которые могут быть проверены в утверждениях модульных тестов.
я вижу. Существует ли рекомендованная статья/сообщение/что-либо из соответствующих утверждений? – alastairs
Ни одного. Если вы Google для чего-то вроде «asp.net mvc unit testing», вы получаете сотни статей/сообщений в блогах, которые занимаются этой проблемой. Все зависит от того, что именно вы хотите проверить. –