大佬教程收集整理的这篇文章主要介绍了asp.net-mvc-3 – ASP MVC 3测试控制器调用ModelState.IsValid总是返回true,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我的控制器发布创建或编辑时,我显然只想保存模型,如果它是有效的。
我看到很多博客和帖子和答案,说的话
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一样。当我运行该项目时,它似乎工作,但这并不是一个方法来测试驱动应用程序。
此外,@R_616_10509@我可以使用[必需]属性作为我的例子,但我的真实代码有更复杂的验证。
思考?
这通常发生在绑定期间,但是由于您只是直接在测试中传递模型,所以您完全跳过。
如果您正在尝试验证验证,请直接进行验证。如果您尝试测试控制器中的错误路径,则测试的安排可以调用_controller.ModelState.AddModelError(// …
以上是大佬教程为你收集整理的asp.net-mvc-3 – ASP MVC 3测试控制器调用ModelState.IsValid总是返回true全部内容,希望文章能够帮你解决asp.net-mvc-3 – ASP MVC 3测试控制器调用ModelState.IsValid总是返回true所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。