ASP.NET MVC – 单元测试覆盖初始化方法
发布时间:2020-12-16 03:43:42 所属栏目:asp.Net 来源:网络整理
导读:我有一个下面显示的抽象类,它被所有其他控制器继承.是否可以测试这种方法?顺便说一下,我正在尝试使用MOQ,但没有运气.如果你能帮助我,我将不胜感激: public abstract class ApplicationController : Controller{ protected override void Initialize(System
我有一个下面显示的抽象类,它被所有其他控制器继承.是否可以测试这种方法?顺便说一下,我正在尝试使用MOQ,但没有运气.如果你能帮助我,我将不胜感激:
public abstract class ApplicationController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { base.Initialize(requestContext); //do some stuff here } } 解决方法
如果你看一下基本Initialize方法的源代码,你会发现它的作用是它设置了ControllerContext和url的东西.现在,下载MvcContrib TestHelper并查看
TestControllerBuilder.构建器会设置您需要的所有内容,以便拥有控制器上下文和您依赖的其他内容.
好的,我们还没有结束 – 您想测试自己的Initialize权限吗? TestControllerBuilder不会调用您的Initialize,因为它以不同的方式进行初始化.我建议你将自定义的Initialize()逻辑分解为不同的方法.然后使用公共方法创建伪(存根)子类,该方法将此因素调用为受保护的Initialize.你跟我在一起吗? 就像是: public abstract class ApplicationController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { base.Initialize(requestContext); MyInitialzie() } protected void MyInitialize() { ControllerContext.XXX // do whatewer you want here. Context is already setted up } } class FakeController: ApplicationController { public void CallMyInitialize() { MyInitialize(); } } 后来在测试课上: [Test] public void MyInitializeTest() { TestControllerBuilder builder = new TestControllerBuilder(); FakeController controller = new FakeController(); builder.InitializeController(controller); controller.CallMyInitialize(); //TODO: verification of MyInitialize assumptions } 明白了吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何填充asp:DropDown客户端?
- asp.net – 当我禁用提交按钮以防止双击时,为什么我的表单没
- 如何在ASP.Net中设置Page.IsValid
- asp.net – 部署后SQL不会连接
- iis – NewRelic如何通过简单地安装.Net代理来工作?
- asp.net-web-api – 根据Web API请求设置JSON CamelCase
- asp.net-mvc – scanMap的目的.CallingAssembly,scan.WithD
- asp.net – System.Web.Security.AntiXss.AntiXssEncoder与
- asp.net – 路径’PROPFIND’被禁止?
- asp.net-mvc – 更改表中给定行的背景颜色
推荐文章
站长推荐
- asp.net – 在VS2008发布网站后,全球资源无法解决
- 使用ASP.NET MVC和AJAX进行实时搜索
- 什么是在asp.net中301重定向更推荐的方法?
- ASP.NET TreeView:Checked更改后的PostBack?
- 如何在ASP.NET Core类库项目中读取配置文件详解
- asp.net-mvc-3 – 具有MVC属性的IoC / DI
- asp.net – 在新线程中使用Ninject
- asp.net-mvc – 在MVC中,何时使用<%=%>和<%%&g
- asp-classic – 在ASP Classic应用程序中获取根目
- asp.net-mvc – ASP.NET MVC中的Flat和Nested Vi
热点阅读