TryValidateProperty始终在测试库中返回true

时间:2018-07-05 13:56:38

标签: unit-testing validation asp.net-core

我在类库中定义了一个类,如下所示:

Classlib1-客户端

public class client{
   [Required]
   public string Firstname {get; set;}
   ...
   [RegularExpression(@"^(?:\d{9}|\d{3}-\d{2}-\d{4}|)$")]
   public string SocialSecurityNumber {get; set;}
}

我还有一个测试库,我想在其中确保我的RegularExpression属性验证有效。

Testlib

[TestMethod]
public void ThrowAnErrorOnSSNWithTooManyDigits(){
    var client = new Client(){
       Firstname = "Mickey",
       ...
       SocialSecurityNumber = "1234567890123"
    };
    var vResults = new List<ValidationResult>();
    var context = new ValidationContext(client){MemberName = "SocialSecurityNumber"};
    var result = Validator.TryValidateProperty(client.SocialSecurityNumber, context, vResults);

    Assert.IsFalse(result)
}

但是,我的断言总是失败,因为结果总是等于true。我尝试更改验证程序以验证所需的名字而不是SocialSecurityNumber,以为我的RegEx不太正确-但是,即使我设置Firstname =“”

,它也返回true

要使Validator在Test类库中工作,我需要做什么?

1 个答案:

答案 0 :(得分:0)

因此,在再次梳理我的项目时,我意识到我添加的Test项目实际上是针对.Net4.6的,而我的其余项目都针对.Net Core 2.0。

我添加了一个新的.NetCore测试项目,并在其中复制了所有测试,一切都按预期工作。