Asp.net mvc ASP.NET MVC 2中的模型绑定测试
第一,;我知道我不需要测试MVC的内部结构,但我真的需要一个套件来测试流入系统的数据 我希望在不模拟所有HTTP上下文的情况下,如何测试objectA(表单集合、dict、集合、对象等)是否符合objectAModel 我希望不必实例化我的控制器或调用操作。我只是想测试我的新对象是否使modelstate无效 我希望我能简单地写作Asp.net mvc ASP.NET MVC 2中的模型绑定测试,asp.net-mvc,unit-testing,modelbinders,modelstate,defaultmodelbinder,Asp.net Mvc,Unit Testing,Modelbinders,Modelstate,Defaultmodelbinder,第一,;我知道我不需要测试MVC的内部结构,但我真的需要一个套件来测试流入系统的数据 我希望在不模拟所有HTTP上下文的情况下,如何测试objectA(表单集合、dict、集合、对象等)是否符合objectAModel 我希望不必实例化我的控制器或调用操作。我只是想测试我的新对象是否使modelstate无效 我希望我能简单地写作 var modelState = new ModelBindingContext<objectAModel>().validate(objectA);
var modelState = new ModelBindingContext<objectAModel>().validate(objectA);
var modelState=new ModelBindingContext().validate(objectA);
布拉德·威尔逊有一个
如何测试它 使用DataAnnotations属性 为您的模型移动验证 离开控制器动作,进入控制器动作 模型活页夹,即您的 控制器操作的单元测试 将被简化 当你为此编写测试时, 您需要验证三件事:
非常简单,您可以实现一个方法,为您的模型类型提取
ModelMetadata
,获取modelvalidater
,并验证模型对象
public bool IsModelValid<T>(T model) where T : class
{
var metaData = ModelMetadataProviders.Current.GetMetadataForType(() => model, typeof(T));
var validator = ModelValidator.GetModelValidator(metaData, new ControllerContext());
var validationResults = validator.Validate(model);
return 0 == validationResults.Count();
}
public bool IsModelValid(T模型),其中T:class
{
var metaData=modelmataproviders.Current.GetMetadataForType(()=>model,typeof(T));
var validator=modelvalidater.getmodelvalidater(元数据,newcontrollercontext());
var validationResults=validator.Validate(模型);
返回0==validationResults.Count();
}
所谓“简单”,我的意思是这不一定要考虑所有可能的配置,但您可以对模型的有效性进行基本检查。然后我就可以进行如下测试:Assert.isTrue(new ModelBindingContext().validate(objectA));这将只测试模型是否用正确的属性修饰。