使用ASP MVC进行单元测试:Validator.TryValidateObject始终返回true

时间:2012-10-08 06:47:01

标签: asp.net-mvc unit-testing validation

我正在尝试使用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。 问题是什么?

由于

0 个答案:

没有答案