【问题标题】:How can I test custom ValidationAttribute classes in MVC 3如何在 MVC 3 中测试自定义 ValidationAttribute 类
【发布时间】:2011-12-06 18:20:09
【问题描述】:

我有一个自定义验证器属性,我正在尝试对其进行单元测试。在我的单元测试中,我正在执行以下操作。

var testModel = new TestModel();
var testContext = new ValidationContext(testModel, null, null);
var attribute = new MyCustomAttribute();

attribute.Validate(testModel, testContext);

当调用attribute.Validate 时,它会正确调用我的IsValid 方法,但attribute.Validatevoid,所以显然不会返回任何内容。任何关于如何获得ValidationResult 的想法的想法将不胜感激。


在阅读了ValidationAttribute.Validate 方法之后,看起来如果验证失败,它会抛出ValidationException,所以这回答了我的问题。

【问题讨论】:

  • 在这里大声思考。如果您的验证成功,那么您不应该在错误字典中有任何验证错误 - 因此检查它是否为空是一项测试。然后我会以同样的方式测试特定的错误。

标签: asp.net-mvc-3 validation custom-attributes


【解决方案1】:

您可以像 MVC 使用 ModelValidator 一样调用验证。像这样的东西(你的里程可能会有所不同,不记得我头顶上的所有调用,稍后会尝试用工作代码替换):

var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType());

var validator = ModelValidator.GetModelValidator(modelMetadata, base.ControllerContext);

var result = validator.Validate(instance)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多