Unit Testing ASP.NET DataAnnotations validation

后端 未结 5 1069
说谎
说谎 2020-12-02 07:28

I am using DataAnnotations for my model validation i.e.

[Required(ErrorMessage="Please enter a name")]
public string Name { get; set; }
5条回答
  •  被撕碎了的回忆
    2020-12-02 07:57

    I posted this in my blog post:

    using System.ComponentModel.DataAnnotations;
    
    // model class
    public class Fiz
    {
        [Required]
        public string Name { get; set; }
    
        [Required]
        [RegularExpression(".+@..+")]
        public string Email { get; set; }
    }
    
    // in test class
    [TestMethod]
    public void EmailRequired()
    {
        var fiz = new Fiz 
            {
                Name = "asdf",
                Email = null
            };
        Assert.IsTrue(ValidateModel(fiz).Any(
            v => v.MemberNames.Contains("Email") && 
                 v.ErrorMessage.Contains("required")));
    }
    
    private IList ValidateModel(object model)
    {
        var validationResults = new List();
        var ctx = new ValidationContext(model, null, null);
        Validator.TryValidateObject(model, ctx, validationResults, true);
        return validationResults;
    }
    

提交回复
热议问题