Я бы согласился, что тестирование типа возвращаемого представления было бы несколько бессмысленным. Однако проверка того, что ожидаемое «представление» было возвращено вместе с его правильными данными, будет действительным контрольным примером IMO.
Например, вот специальный тестовый пример редактирования для контроллера редактирования. Обратите внимание, что в этом примере используются Moq и Nunit, но кроме этого он довольно прост.
Обратите внимание, что этот ViewResult приведен к ожидаемой модели представления, а затем сделаны утверждения относительно ожидаемого контакта.
Тест:
[Test]
public void Edit_Get_Should_Lookup_Contact_From_Repository_And_Return_Edit_View()
{
// arrange
var _repository = new Mock<IContactRepository>();
var expectedContact = new Contact
{
First = "first",
Last = "last",
Email = "mail@test.com"
};
var mockContext = new Mock<ControllerContext>();
_repository.Setup(x => x.GetById(It.IsAny<int>())).Returns(expectedContact);
var controller = new ContactController(_repository.Object)
{
ControllerContext = mockContext.Object
};
// act
var result = controller.Edit(1) as ViewResult;
var resultData = (Contact)result.ViewData.Model;
// assert
Assert.AreEqual("Edit", result.ViewName);
Assert.AreEqual(expectedContact.First, resultData.First);
Assert.AreEqual(expectedContact.Last, resultData.Last);
Assert.AreEqual(expectedContact.Email, resultData.Email);
}
Контроллер:
[HttpGet]
public ActionResult Edit(int id)
{
var contact = _repository.GetById(id);
return View("Edit", contact);
}