asp.net-mvc-3 – ASP MVC 3测试控制器调用ModelState.IsValid总是返回true
|
我有一个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-mvc – 如何在MVC 3中基于XML文件动态创建控件
- asp.net – 什么时候以明文形式存储密码是个好主意?
- asp.net-mvc – SOA vs MVC – 何时使用
- asp.net – JSON在IE7中未定义
- asp.net-mvc – 使用ASP.NET MVC响应REQUEST_METHOD = HEAD
- asp.net-mvc – ASP.NET MVC:访问集合中项目的ModelMetada
- asp.net-mvc-3 – 如何将现有文件夹与其所有子文件夹和内容
- asp.net-mvc – IIS 7上的ASP.net MVC返回空白页面
- asp.net – 如何在一个web项目正在调试的同时运行一个测试?
- asp.net-mvc – 本地化数据注释默认消息([必需] [StringLen
- asp.net – 任何方式构建Google文档,如PDF文件的
- asp.net – 如何将网页添加到gridview
- asp-classic – 如何从此ADODB.Recordset获取插入
- asp.net – 链接按钮不能与IE 10一起使用
- 在Asp.Net中发送电子邮件时出错错误代码为0x8004
- asp.net – 为什么HttpUtility.UrlPathEncode标记
- asp.net-mvc – MvcHtmlString.Create()和Html.R
- ASP.NET MVC AJAX Sys是未定义的错误
- 如何刷新#include文件 – 它们在IIS7 / ASP.NET上
- asp.net-mvc – 使用MVC3 WebGrid助手向html属性
