2012년 11월 21일 수요일

[ASP.NET MVC] 몇 가지 테스트 케이스들.

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"]);
}


.

댓글 없음:

댓글 쓰기