ModelState.IsValid always returning true while mocking a request

简介: ASB.net  MVC 视图验证里有一个IValidatableObject接口.这里面有一个验证方法.通常我们表单提交的时候dto就是用一个实现IValidatableObject这个接口的实体. 但是在测试的时候,当我们测试控制器的时候会发现控制器里调用ModelState.

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#

 

目录
相关文章
|
8月前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(07) 她气鼓鼓递来一条SQL | 怎么看执行计划、SQL怎么优化?
在日常研发工作当中,系统性能优化,从大的方面来看主要涉及基础平台优化、业务系统性能优化、数据库优化。面对数据库优化,除了DBA在集群性能、服务器调优需要投入精力,我们研发需要负责业务SQL执行优化。当业务数据量达到一定规模后,SQL执行效率可能就会出现瓶颈,影响系统业务响应。掌握如何判断SQL执行慢、以及如何分析SQL执行计划、优化SQL的技能,在工作中解决SQL性能问题显得非常关键。
|
XML Java 数据格式
spring中bean的自动装配(详细)
spring中bean的自动装配(详细)
980 0
|
SQL 安全 网络安全
GitHub点赞飙升!电信大牛的Python渗透测试实战指南
在网络安全领域,会不会编程,是区分“脚本小子”和真正黑客的关键。实际的渗透测试中会遇到各种复杂的网络环境,常用工具不一定能满足需求,这时就需要对现有工具进行扩展,或者编写符合要求的工具、自动化脚本,这都需要一定的编程能力。在分秒必争的 CTF 竞赛中,想要高效地使用自制脚本工具来达成各种目的,更是需要有编程能力。 Python 这两年越来越火!除了语法简单、开发效率高以外,Python 最大的优势就是拥有超多第三方库。很多有名的网络安全工具和安全系统框架都是用 Python 开发的!所以,掌握 Python 编程已经成为网络安全从业者的必备技能之一。如果你想成为一名合格的安全从业者,就不能只会
软件设计与架构复杂度问题之业务简单的系统不适合使用DDD架构如何解决
软件设计与架构复杂度问题之业务简单的系统不适合使用DDD架构如何解决
|
Python
python脚本基础示例
python脚本基础示例
183 1
|
语音技术 Python
语音识别,continue和break的使用,循环综合案例,完成发工资案例,函数的初体验,len()是内置好的函数,def 函数名 def xxx(),函数的定义 def xxx() ,调用函数
语音识别,continue和break的使用,循环综合案例,完成发工资案例,函数的初体验,len()是内置好的函数,def 函数名 def xxx(),函数的定义 def xxx() ,调用函数
|
传感器 存储 数据采集
遥感原理与应用(一)什么是遥感?
🏆在本文中,作者从各个方面介绍了介绍了遥感的定义及其应用范围,作为遥感的学习无疑有很大的帮助
948 0
|
消息中间件 开发框架 jenkins
【Linux系统】常驻进程应用实践
上一篇关于常驻进程/守护进程的文章,介绍了守护进程的一些基本概念,本篇将介绍工作经历中的一个真实应用场景,以及遇到的问题,和当时的解决方法。
351 0
|
前端开发 JavaScript Java
springboot实现用户统一认证、管理(单点登录)
springboot实现用户统一认证、管理(单点登录)
1138 0