这是控制器操作的一部分:
[HttpPost]
public ActionResult NewComplaint(Complaint complaint)
{
if(!ModelState.IsValid)
{
// some code
}
// some more code...
}
运行应用程序时,模型会在 if 语句被调用之前自动验证。但是,当尝试对此代码进行单元测试时,不会发生自动验证。
如果我要使用 FormCollection 并改为调用 TryUpdateModel,则会进行验证,但我不想使用它。
我发现在 if 语句之前调用 TryValidateModel(model) 可以很好地解决问题;只需要一行额外的代码。不过,我宁愿摆脱它。
任何想法为什么在单元测试时不会发生自动验证但在应用程序运行时会发生?
编辑:忘了提,我正在使用 ASP.NET MVC3 RC1,如果这有什么不同,我正在模拟控制器的 HTTPContext 对象