Модульный тест, чтобы определить, что действие возвращает правильный вид - PullRequest
11 голосов
/ 29 июня 2011

Как вы можете проверить, что метод действия, который вам нравится, вернет правильное представление, потому что Viewname - пустая строка? Должен ли я вообще потрудиться проверить это? Я не уверен, сколько юнит-тестов нужно сделать, я думаю, вы могли бы создать много юнит-тестов!

public ActionResult Index()
{
   return View();
}


[TestMethod]
public void DetermineIndexReturnsCorrectView()
{
     HomeController controller = new HomeController();

     ViewResult result = controller.Index() as ViewResult;

     //****result.ViewName is empty!!!!***//
     Assert.AreEqual("Index", result.ViewName);
}

Ответы [ 5 ]

7 голосов
/ 29 июня 2011

Проверьте тип результата.

//Act
var result = controller.Create();

//Assert
Assert.IsInstanceOfType(result, typeof(ViewResult));

Затем напишите отдельные тесты для случаев RedirectToRouteResult, а также обработайте случаи исключений, и все готово.

6 голосов
/ 29 июня 2011

Внутри действия вашего контроллера вы не указали имя представления, поэтому это пустая строка.В этом случае MVC принимает имя представления таким же, как имя действия.

Стоит ли вообще проверять это?

Вам обязательно нужно это проверить.Я не уверен, сколько юнит-тестов нужно сделать ...

Столько, сколько сможете.Думайте об этом, как об инвестициях, которые могут сэкономить вам много времени позже.

6 голосов
/ 29 июня 2011

Взгляните на MvcContrib Testhelpers .Там тоже хорошие примеры

2 голосов
/ 03 декабря 2013

Если у вас есть представление типа

public ActionResult Index()
{
    return View();
}

, свойство ViewName примет значение по умолчанию "".Вам нужно указать ViewName как

public ActionResult Index()
{
    return View("Index");
}

, чтобы решить это.

2 голосов
/ 29 июня 2011

Пример кода MvcContrib TestHelpers будет выглядеть примерно так:

var result = _testController.Details("ref").AssertViewRendered().ForView("TestDetails");

Это проверяет, что метод _testController Details возвращает представление "TestDetails"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...