ModelBinder应用于MVC ActionResult参数的单元测试?

时间:2017-03-01 09:21:16

标签: c# asp.net-mvc unit-testing nunit moq

我有一个控制器,如:

public ActionResult Index([ModelBinder(typeof(MyBinder))]int? MyId)

我想创建一个单元测试via Nunit+Moq+AutoFixture以确保MyId参数用MyBinder修饰,看起来像是一个有效的单元测试,如果它被删除,代码将停止按预期工作。显然,测试实际的Custom Model Binder是单独完成的。

我预计它类似于测试属性是否使用特定属性修饰,例如下面的内容,但无法通过这种方式找到如何访问参数:

private readonly PropertyInfo _SomeProp = typeof(AddressViewModel).GetProperty("SomeProp");<br>
_SomeProp.Should().BeDecoratedWith&lt;DisplayAttribute&gt;();

1 个答案:

答案 0 :(得分:0)

这很简单。

这是MVC网络应用程序:

<md-tab-group class="tab-container">
<md-tab *ngFor="let tab of tabs" label="{{tab.name}}" class="{{ tab.archive && 'item-archived' || 'item-active' }}">
    ...
</md-tab>

这是我们的NUnit测试:

  public class MyBinder : IModelBinder
  {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
      return default(int);
    }
  }

  public class DefaultController : Controller
  {
    public ActionResult Index([ModelBinder(typeof(MyBinder))] int? MyId)
    {
      return null;
    }
  }