ViewResult
액션 메서드의 실행 결과는 ViewResult 클래스를 통해 테스트한다.[Test]
public void Should_Load_Index_View()
{
var viewResult = new HomeController().Index() as ViewResult;
// 뷰 이름 확인
Assert.AreEqual("Index", viewResult.ViewName);
}
RedirectToRouteResult
POST 액션 메서드의 테스트는 모델 테스트를 포함한다. CRUD 작업 후 처리 방식에 따라 테스트 항목을 결정.[Test]
public void Should_Delete_Item()
{
var deleteItem = Items.FindBy("id");
var redirectToRouteResult =
(RedirectToRouteResult)new SampleController().Delete(deleteItem);
// Item이 제대로 삭제되었는지 확인
Assert.IsFalse(Items.All.Contains(deleteItem));
// 삭제 후 Index 뷰가 표시됐는지 확인
Assert.AreEqual("Index", redirectToRouteResult.RouteValues["action"]);
}
FormCollection
모델 바인딩을 사용할 수 없는 POST 액션 메서드는 FormCollection 클래스를 이용해 테스트.[Test]
public void Should_Create_Item()
{
var item = new Item { Id = "1", Name = "Test Item" };
var formValues = new FormCollection();
formValues.Add("Id", item.Id);
formValues.Add("Name", item.Name);
var controller = new SampleController();
var result = controller.Create(formValues) as RedirectToRouteResult;
Assert.IsTrue(Items.All.Contains(item));
Assert.AreEqual("Index", redirectToRouteResult.RouteValues["action"]);
}
.
댓글 없음:
댓글 쓰기