测试ASP.NET MVC 2中的模型绑定

det*_*pro 5 asp.net-mvc unit-testing defaultmodelbinder modelbinders modelstate

第一; 我知道我不需要测试MVC的内部,但我真的需要套件测试流入我们系统的数据.

我希望如何在不模仿所有HTTP上下文的情况下,测试objectA(表单集合,字典,集合,对象等)是否符合objectAModel?

我不想实例化我的控制器或调用操作.我只是想测试我的新对象是否使模型状态无效.

我希望我能简单地写一下

var modelState = new ModelBindingContext<objectAModel>().validate(objectA);
Run Code Online (Sandbox Code Playgroud)

det*_*pro 2

Brad Wilson在 DataAnnotations 上发表了一篇精彩的文章

\n\n
\n\n
\n

我该如何测试它?

\n\n

对模型使用 DataAnnotations 属性将验证从控制器操作移至模型绑定器中,这意味着控制器操作的单元测试将得到简化。

\n\n

当您\xe2\x80\x99 为此编写测试时,\n 您需要验证三件事:

\n\n
    \n
  1. DataAnnotationsModelBinder 是否注册为默认绑定器?\n 您\xe2\x80\x99 只会对整个应用程序执行一次此操作,就像您将编写的路由\n 测试一样。
  2. \n
  3. 我的模型是否正确地使用 DataAnnotations 属性进行了修饰?\n 您\xe2\x80\x99 最终将为添加到模型中的每个验证属性编写测试。
  4. \n
  5. 当模型状态无效时,我的操作方法是否能正确反应?\n You\xe2\x80\x99ll 只需要为每个操作方法编写一次。
  6. \n
\n
\n