在ASP.NET MVC中测试HtmlHelpers
发布时间:2020-12-15 18:46:27 所属栏目:asp.Net 来源:网络整理
导读:有没有办法(单位)测试我自己的HtmlHelpers?如果我想要自定义控件(由HtmlHelper呈现),并且我知道该控件的请求如何首先编写测试 – 然后编写代码?有没有一个特定的(好)的方法来做到这一点? 这值得吗? 解决方法 主要的问题是您必须模拟HtmlHelper,因为您
有没有办法(单位)测试我自己的HtmlHelpers?如果我想要自定义控件(由HtmlHelper呈现),并且我知道该控件的请求如何首先编写测试 – 然后编写代码?有没有一个特定的(好)的方法来做到这一点?
这值得吗? 解决方法
主要的问题是您必须模拟HtmlHelper,因为您可能正在使用帮助程序的方法来获取路由或值或返回另一个扩展方法的结果。 HtmlHelper类有很多属性,其中一些类似于ViewContext或当前Controller的复杂性。
This post from Ben Hart解释了如何用Moq创建这样的模拟。可以轻松地翻译成另一个模拟框架。 这是我的Rhino Mocks版本,适合于MVC框架中的变化。它没有完全测试,但它是为我工作,但不期望完美的结果: public static HtmlHelper CreateHtmlHelper(ViewDataDictionary viewData) { var mocks = new MockRepository(); var cc = mocks.DynamicMock<ControllerContext>( mocks.DynamicMock<HttpContextBase>(),new RouteData(),mocks.DynamicMock<ControllerBase>()); var mockViewContext = mocks.DynamicMock<ViewContext>( cc,mocks.DynamicMock<IView>(),viewData,new TempDataDictionary()); var mockViewDataContainer = mocks.DynamicMock<IViewDataContainer>(); mockViewDataContainer.Expect(v => v.ViewData).Return(viewData); return new HtmlHelper(mockViewContext,mockViewDataContainer); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – asp.net mvc formcollection
- asp.net-mvc-3 – MVC3 WebGrid是否支持水平滚动条?
- asp.net – 使用Visual Studio 2015检测gulp中的发布/调试
- Asp.NET 生成静态页面并分页的代码
- asp.net-mvc – MVC4 Web Api中的[Bind(Prefix =“principa
- asp.net-mvc – 我应该如何管理ASP.NET MVC 4应用程序中的成
- asp.net-mvc – 在ASP.NET MVC应用程序中更改日期格式
- asp.net-core-mvc – MVC6路由到单页面应用程序而不会丢失4
- asp.net-mvc – 一种在MVC环境中处理返回URL的智能方法
- asp.net – 操纵HTTP响应
推荐文章
站长推荐
- Pro ASP.NET Core MVC(四)【C#关键特征】
- asp.net-identity – 使用SQL Server而不是Local
- asp.net – Page.PreLoad事件未出现在visual stu
- asp.net – __doPostBack在DotNetNuke网站上未定
- asp.net-mvc – 使用ASPX View Engine与MVC 5
- asp.net-mvc-3 – EF和存储库模式 – 在一个控制
- asp.net – EF首先使用代码与一对多关系创建重复
- asp.net – 如何冻结GridView标题?
- asp.net – 在VS2012中使用动态数据实体网站时出
- ASP.NET Core和Angular的RDLC本地报表查看器(> 2
热点阅读