我正在使用DataAnnotations中的RegularExpressionAttribute进行验证,并想测试我的正则表达式。有没有一种方法可以在单元测试中直接调用属性?

我希望能够执行以下操作:

public class Person
{
    [RegularExpression(@"^[0-9]{3}-[0-9]{3}-[0-9]{4}$")]
    public string PhoneNumber { get; set; }
}

然后在单元测试中:
[TestMethod]
public void PhoneNumberIsValid
{
    var dude = new Person();
    dude.PhoneNumber = "555-867-5309";

    Assert.IsTrue(dude.IsValid);
}

甚至
Assert.IsTrue(dude.PhoneNumber.IsValid);

最佳答案

我最终使用了DataAnnotations命名空间中的静态Validator类。我的测试现在看起来像这样:

[TestMethod]
public void PhoneNumberIsValid()
{
    var dude = new Person();
    dude.PhoneNumber = "666-978-6410";

    var result = Validator.TryValidateObject(dude, new ValidationContext(dude, null, null), null, true);

    Assert.IsTrue(result);
}

10-02 22:20