Unit tests on MVC validation

前端 未结 12 1216
离开以前
离开以前 2020-12-04 06:31

How can I test that my controller action is putting the correct errors in the ModelState when validating an entity, when I\'m using DataAnnotation validation in MVC 2 Previe

12条回答
  •  再見小時候
    2020-12-04 06:48

    @giles-smith's answer is my preferred approach but the implementation can be simplified:

        public static void ValidateViewModel(this Controller controller, object viewModelToValidate)
        {
            var validationContext = new ValidationContext(viewModelToValidate, null, null);
            var validationResults = new List();
            Validator.TryValidateObject(viewModelToValidate, validationContext, validationResults, true);
            foreach (var validationResult in validationResults)
            {
                controller.ModelState.AddModelError(validationResult.MemberNames.FirstOrDefault() ?? string.Empty, validationResult.ErrorMessage);
            }
        }
    

提交回复
热议问题