我正在尝试使用Validator.TryValidateObject验证MVC模型。 这适用于生产模式,但不适用于单元测试代码。 Validator.TryValidateObject给我alwasy true。
代码部分:
在Controller-Constructor中,我注入Model:
private IEmailModel model;
public JoggenController(IEmailModel m)
{
this.model = m;
}
在action-methode我验证模型,在生产模式下工作正常,isValid是真还是假:
public ViewResult AddEmail(String email)
{
model.Email = email;
var context = new ValidationContext(model, null, null);
var list = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(model, context, list, true);
//...
现在我将测试我的AddEmail()并使用此测试代码:
var emailModel = new Mock<IEmailModel>();
emailModel
.Setup(p => p.Email)
.Returns("xxx");
var controller = new Controller(emailModel.Object);
//should Faking ModelState.IsValid = false
controller.ModelState.Add("testError", new ModelState());
controller.ModelState.AddModelError("testError", "test");
var result = controller.AddEmail("xxx") as ViewResult;
//...
如果我调试testcode,var isValid = Validator.TryValidateObject总是返回true。 问题是什么?
由于