返されるビューのタイプをテストすることはやや意味がないことに同意します。しかし、期待される「ビュー」が正しいデータと共に返されることをテストすることは、有効なテストケース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 = "[email protected]"
};
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);
}
ああ... 'result.Model'が便利になります。 –