asp.net-mvc-3 – 如何使用ModelMetadata单元测试modelbinder
发布时间:2020-12-15 18:37:48 所属栏目:asp.Net 来源:网络整理
导读:如何单元测试自定义的ModelBinder? 这是代码。 public class MagicBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext) { var boundModelObject = base.BindModel(c
如何单元测试自定义的ModelBinder?
这是代码。 public class MagicBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext) { var boundModelObject = base.BindModel(controllerContext,bindingContext); var properties = bindingContext.ModelType.GetProperties().Where(a => a.CanWrite); foreach (var propertyInfo in properties) { object outValue = null; bindingContext.TryGetValue(propertyInfo.Name,propertyInfo.DeclaringType,out outValue); propertyInfo.SetValue(boundModelObject,outValue,null); } return boundModelObject; } } 这里是测试脚本。 [TestMethod] public void TestFooBinding() { var dict = new ValueProviderDictionary(null) { {"Number",new ValueProviderResult("2","2",null)},{"Test",new ValueProviderResult("12","12",}; var bindingContext = new ModelBindingContext() { ModelName = "foo",ValueProvider = dict}; var target = new MagicBinder(); Foo result = (Foo)target.BindModel(null,bindingContext); } public class Foo { public int Number { get; set; } public int Test { get; set; } } 问题?在MagicBinder中,bindingContext.Model为null。如果我尝试设置它 那么如何构建ModelMetadata?它甚至不能被嘲笑。 解决方法
尝试这样:
[TestMethod] public void TestFooBinding() { // arrange var formCollection = new NameValueCollection { { "Number","2" },{ "Test","12" },}; var valueProvider = new NameValueCollectionValueProvider(formCollection,null); var metadata = ModelMetadataProviders.Current.GetMetadataForType(null,typeof(Foo)); var bindingContext = new ModelBindingContext { ModelName = "",ValueProvider = valueProvider,ModelMetadata = metadata }; var controllerContext = new ControllerContext(); var sut = new MagicBinder(); // act Foo actual = (Foo)sut.BindModel(controllerContext,bindingContext); // assert // TODO: } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 你会向新手推荐什么ASP.NET书籍?
- asp.net – PolicyException:无法获取所需的权限 – 此错误
- asp.net – 无效的安全证书和域名
- ASP.NET MVC – Session为null
- asp.net-mvc – 使用部分视图进行MVC分页
- asp.net – 通过XSP2运行守护进程的任何问题?
- 浅谈Quartz.Net 从无到有创建实例
- asp.net – 为什么我们应该通过部分视图使用MVC 6功能视图组
- asp.net-mvc-4 – 在Azure中部署时,在EF迁移中使用Update-D
- asp.net-mvc – ASP .NET MVC RedirectoToAction忽略所在的
推荐文章
站长推荐
热点阅读