asp.net-mvc-3 – ASP MVC 3测试控制器调用ModelState.IsValid总
发布时间:2020-12-16 00:40:05 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP MVC 3应用程序,在我的模型我已经实现了IValidatableObject。 当我的控制器发布创建或编辑时,我显然只想保存模型,如果它是有效的。 我看到很多博客和帖子和答案,说的话 if(!ModelState.IsValid){ return View();} 我的问题。为什么ModelState
我有一个ASP MVC 3应用程序,在我的模型我已经实现了IValidatableObject。
当我的控制器发布创建或编辑时,我显然只想保存模型,如果它是有效的。 我看到很多博客和帖子和答案,说的话 if(!ModelState.IsValid) { return View(); } 我的问题。为什么ModelState.IsValid在Controller的单元测试中始终为真? 例: [Test] public void InValidModelsAreNotAdded() { var invalidModel = new MyModel() { SomeField = "some data",SomeOtherField = "" }; var result = _controller.Submit(invalidModel); _repository.AssertWasNotCalled(r => r.Add(Arg.Is.Anything)); } 型号代码: public class MyModel : IValidatableObject { public string SomeField { get; set; } public string SomeOtherField { get; set; } public IEnumerable Validate(ValidationContext validationContext) { if(string.IsNullOrWhiteSpace(SomeOtherField)) { yield return new ValidationResult("Oops invalid.",new[] {"SomeOtherField"}); } } } AssertWasNotCalled始终未能通过此测试。 我通过测试,注意到这个测试的ModelState.IsValid是真的。就好像没有调用IValidatableObject.Validate一样。当我运行该项目时,它似乎工作,但这并不是一个方法来测试驱动应用程序。 此外,我意识到我可以使用[必需]属性作为我的例子,但我的真实代码有更复杂的验证。 思考? 解决方法
这是真的,因为你没有调用任何设置它的错误。
这通常发生在绑定期间,但是由于您只是直接在测试中传递模型,所以您完全跳过。 如果您正在尝试验证验证,请直接进行验证。如果您尝试测试控制器中的错误路径,则测试的安排可以调用_controller.ModelState.AddModelError(// … (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – Web.HttpContext.Current.User.Identity.Name来
- asp.net – 您在实施/使用WebDAV方面有哪些经验?
- asp.net – IIS7,SSL和“由于请求实体太大,因此未显示该页面
- asp.net-mvc-3 – 将模型数据从Knockout发送回MVC 3
- asp.net – 如何在加载/性能测试期间找到IIS要模拟的平均并
- ASP.NET MVC视图模型的最佳实践
- asp.net-mvc – MVC – 如何从get请求获取参数值,该参数名称
- asp.net-mvc – 动作链接按钮
- asp.net-mvc – RavenDB部署问题
- 剃刀 – 从另一个TagHelper调用TagHelpers?
推荐文章
站长推荐
- asp.netcore3.0 netstandard2.1 使用 DbProvider
- asp.net-mvc – 如何使用npoi将图像放在一个单元
- asp.net – 实体框架Web配置文件
- asp.net-mvc-3 – 无法在MVC3 HTML Helper中获取
- asp.net读取磁盘文件、删除实例代码
- asp.net-mvc – 在WCF项目中设置Web API
- 单元测试 – 首先要测试的项目的哪个部分?
- asp.net-mvc – Visual Studio在剃刀语句中显示语
- asp.net-core – 提供Google身份验证背后的静态文
- asp.net-mvc – 静态内容的MVC客户端缓存不起作用
热点阅读