내 모델 클래스는 다음과 같다 :ModelState.IsValid 모델
public class PostInputViewModel
{
[Required]
[MinLength(1)]
[MaxLength(125)]
public string Title { get; set; }
[Required]
[AllowHtml]
[Display(Name="Content")]
public string Content { get; set; }
}
및 컨트롤러은 다음과 같다 :
[HttpPost]
public ActionResult Write(PostInputViewModel input)
{
if (!ModelState.IsValid)
return View(input);
var post = new Post
{
Title = input.Title,
Content = input.Content,
DateCreated = DateTime.Now,
DateModified = DateTime.MaxValue,
};
dbContext.Posts.Add(post);
dbContext.SaveChanges();
return RedirectToAction("Index", "Home");
}
내가 F5를 눌러 웹 응용 프로그램을 실행, 그리고 돈 경우 입력 제목과 내용 값, ModelState.IsValid는 false입니다. 그러나 컨트롤러 테스트를 통해 컨트롤러 클래스를 테스트하면 ModelState.IsValid는 항상 true입니다. 테스트 케이스는 다음과 같습니다.
[TestMethod]
public void write_should_validate_model()
{
var input = new PostInputViewModel();
input.Title = null;
input.Content = null;
var actionResult = controller.Write(input) as ViewResult;
Assert.IsFalse(actionResult.ViewData.ModelState.IsValid);
}
누락 된 부분이 있습니까? 미리 감사드립니다.
당신은 컨트롤러를 초기화 MVC 라이프 사이클을 실행하지 않았다. – SLaks
정상적인 인스턴스처럼 컨트롤러 인스턴스를 만듭니다. 예를 들어 PostController controller = new PostController(); 컨트롤러가 MVC 라이프 사이클을 처리해야하는 경우, 테스트 케이스에서이를 수행하는 방법은 무엇입니까? – Ray