码迷,mamicode.com
首页 > 其他好文 > 详细

ModelState.IsValid always returning true while mocking a request

时间:2015-04-20 14:29:09      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

ASB.net  MVC 视图验证里有一个IValidatableObject接口.这里面有一个验证方法.通常我们表单提交的时候dto就是用一个实现IValidatableObject这个接口的实体.

但是在测试的时候,当我们测试控制器的时候会发现控制器里调用ModelState.IsValid的时候,永远都是返回true.

这就需要扯到ASB.NET MVC的生命周期了.在这个生命周期里面.模型绑定先于方法调用运行,所以我们在控制器里面调用ModelState.IsValid的时候模型绑定已经完成(这不废话么)

而我们单元测试是直接实例化控制器,然后调用方法的,不走生命周期,所以不会验证视图,IsValid是一个可读的自动属性

 public bool IsValid
    {
      get
      {
        return Enumerable.All<ModelState>((IEnumerable<ModelState>) this.Values, (Func<ModelState, bool>) (modelState => modelState.Errors.Count == 0));
      }
    }

 我们都没有模型绑定,erros.count 当然是0啦,那么ModelState.也就一直都是true了.

 

http://stackoverflow.com/questions/29715295/asp-net-mvc-httpcontext-current-is-null-while-mocking-a-request/29738778#

 

ModelState.IsValid always returning true while mocking a request

标签:

原文地址:http://www.cnblogs.com/zeusro/p/4441293.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!