asp.net-mvc – 如何在MVC中测试ModelMetadata.FromLambdaExpres
发布时间:2020-12-15 19:42:35 所属栏目:asp.Net 来源:网络整理
导读:我有一个MVC4项目中的助手类的扩展方法: public static class ExtensionMethods{ public static object ValueTModel,TProperty(this ExpressionFuncTModel,TProperty expression,ViewDataDictionaryTModel viewData) { return ModelMetadata.FromLambdaExpr
我有一个MVC4项目中的助手类的扩展方法:
public static class ExtensionMethods { public static object Value<TModel,TProperty>(this Expression<Func<TModel,TProperty>> expression,ViewDataDictionary<TModel> viewData) { return ModelMetadata.FromLambdaExpression(expression,viewData).Model; } } 这样做非常简单,只是简单的方式. 那么,如何最好地进行单元测试呢?最好避免模拟静态方法或使用依赖注入,但如果这些确实是这种情况下唯一可行的方法,那么我是开放的. 这只是一个有缺陷的设计,可以改进,以便更适合单元测试吗? 解决方法
这确实是一个有缺陷的设计,可能很常见.正确的方法签名需要切换参数顺序:
public static object Value<TModel,TProperty>(this ViewDataDictionary<TModel> viewData,Expression<Func<TModel,TProperty>> expression) { return ModelMetadata.FromLambdaExpression(expression,viewData).Model; } 然后可以从单元测试中调用它: Expression<Func<Model,string>> expression = (t => t.PropertyName); ExtensionMethods.Value<Model,string>(viewData,expression)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .net – TagBuilder从MVC 3 beta版转到RC
- asp.net – web.config中system.codedom中多个编译器定义的
- asp.net-mvc-3 – asp.net mvc 3应用程序中的默认sessionSt
- 如何从经典ASP输出Excel * .xls文件
- 在ASP.net中模拟HttpSessionState进行单元测试
- asp.net-mvc-3 – Razor View引擎中的全局变量
- asp.net 工具
- 取消ASP.NET中的默认提交按钮
- asp.net-mvc – 我没有使用GET方法获取友好的URL
- asp.net – 以编程方式将Javascript文件添加到.net中的用户
推荐文章
站长推荐
- asp.net – 何时使用Request.RegisterForDispose
- asp.net-mvc-3 – .Net Mvc 3触发器(提交按钮除外
- asp.net-mvc – 实体框架SQLite部署
- asp.net-core – 在强类型视图中呈现ViewCompone
- asp.net-mvc – 创建/编辑父和子窗体MVC
- DxPackNet 4.保存音视频为本地avi文件
- asp.net-mvc – 使用Razor和.NET的一行If语句
- 对RESTful API的异步请求是否应该有单独的URI?
- 在asp.net中排序gridview的列c#
- asp.net-mvc – MVC – 在同一页面上与多个实体进
热点阅读