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"]); }
.
댓글 없음:
댓글 쓰기