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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.NET MVC 3发布日期?
- asp.net-mvc – 后退按钮不会导致回发到MVC中的控制器操作
- asp.net-mvc – 可在LAN中远程访问的IIS页面,但不能在服务器
- asp.net-mvc – 在web.config文件中创建自定义变量?
- asp.net-mvc – 如何在SQL Server中为Asp.Net MVC 4应用程序
- asp.net-mvc-3 – 与ASP.NET MVC 3中的视图页面不同的模型的
- asp.net – 从SignalR中的所有组中删除连接
- ASP.Net WebApi身份验证和安全性
- asp.net – HttpContext.Current.Request.IsAuthenticated和
- 捕获到ASP.NET ASMX Web服务的SOAP请求