加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何使这个ASP.NET MVC控制器更易于测试?

发布时间:2020-12-16 07:43:38 所属栏目:asp.Net 来源:网络整理
导读:我有一个覆盖OnActionExecuting的控制器,并执行以下操作: protected override void OnActionExecuting(ActionExecutingContext filterContext){ base.OnActionExecuting(filterContext); string tenantDomain = filterContext.RouteData.Values["tenantDoma
我有一个覆盖OnActionExecuting的控制器,并执行以下操作:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    base.OnActionExecuting(filterContext);
    string tenantDomain = filterContext.RouteData.Values["tenantDomain"] as string;
    if (!string.IsNullOrWhiteSpace(tenantDomain))
    {
        using (var tx = BeginTransaction())
        {
            this.Tenant = repo.FindOne(t => t.Domain == tenantDomain);
        }
    }
}

租客是受保护的财产,私人二手.该类本身是我的真实控制器派生的抽象基本控制器.我在其他控制器中的代码看起来很像这样:

if (Tenant == null)
{
   // Do something
}
else
{
   // Do something else
}

我该如何测试这段代码?我需要做的是以某种方式设置租户属性,但我不能,因为:

>这是一个受保护的财产,并且
>它有一个私人二传手

改变租户的可见度并不“感觉”正确.我对派生控制器进行单元测试的替代方案是什么?

解决方法

用反射?

这样的东西应该工作(未测试):

YourController.GetType()
    .GetProperty("Tenant",BindingFlags.NonPublic | BindingFlags.Instance)
    .SetValue(yourControllerInstance,null,theTestValue);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读