Unit Test, чтобы определить, что действие вернулось правильно.

Как вы можете проверить, что метод действия, который у вас есть, вернет правильный вид, потому что 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);
}

Ответ 2

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

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

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

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

Ответ 3

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

Должен ли я даже проверить это?

Вы должны обязательно проверить это.

Assert.AreEqual(string.Empty, result.ViewName);

Я не уверен, сколько модульных тестов делать...

Сколько можно. Подумайте, что это инвестиции, которые могут сэкономить вам много времени.

Ответ 4

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

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

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

Ответ 5

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

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

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

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

чтобы решить эту проблему.