【发布时间】:2010-11-19 04:12:24
【问题描述】:
当我在 MVC 2 Preview 1 中使用 DataAnnotation 验证时,如何测试我的控制器操作在验证实体时是否在 ModelState 中放入了正确的错误?
一些代码来说明。一、动作:
[HttpPost]
public ActionResult Index(BlogPost b)
{
if(ModelState.IsValid)
{
_blogService.Insert(b);
return(View("Success", b));
}
return View(b);
}
这是一个失败的单元测试,我认为应该通过但没有通过(使用 MbUnit 和 Moq):
[Test]
public void When_processing_invalid_post_HomeControllerModelState_should_have_at_least_one_error()
{
// arrange
var mockRepository = new Mock<IBlogPostSVC>();
var homeController = new HomeController(mockRepository.Object);
// act
var p = new BlogPost { Title = "test" }; // date and content should be required
homeController.Index(p);
// assert
Assert.IsTrue(!homeController.ModelState.IsValid);
}
我想除了这个问题之外,应该我测试验证,我应该以这种方式测试它吗?
【问题讨论】:
-
不是 var p = new BlogPost { Title = "test" };比行动更安排?
-
Assert.IsFalse(homeController.ModelState.IsValid);
标签: asp.net-mvc unit-testing validation asp.net-mvc-2 tdd