1
[ObjectValidator]에 문제가 있습니다. 그래서, 난이 :ObjectValidator unit testing
public class UserBO
{
public int ID
{
get;
set;
}
[NotNullValidator(MessageTemplate = "Can't be null!")]
[RegexValidator(@"[a-z]|[A-Z]|[0-9]*", MessageTemplate = "Must be valid!", Ruleset = "validate_username")]
[StringLengthValidator(5, RangeBoundaryType.Inclusive, 25, RangeBoundaryType.Inclusive, Ruleset = "validate_username")]
public string username
{
get;
set;
}
및 다른 클래스 :
public class PersonBO
{
public int ID
{
get;
set;
}
[NotNullValidator(MessageTemplate="Can't be null!")]
[ObjectValidator(MessageTemplate = "Must be valid!", Ruleset="validate_obj_user")]
public UserBO User
{
get;
set;
}
...
다음 테스트를 통과 왜 이제 말해 줄 수? 때문에
[TestMethod()]
public void PersonBOConstructorTest()
{
PersonBO target = new PersonBO()
{
User = new UserBO
{
ID = 4,
username = "asd"
}
};
ValidationResults vr = Validation.Validate<PersonBO>(target, "validate_obj_user");
Assert.IsTrue(vr.IsValid);
}
이
이 유효하지 않을한다 : 사용자 이름 "ASD"(제 3 자)를 포함 (UserBO 유형의) 사용자 속성, 그리고 내가 그것을 (5와 25 자 사이) StringLengthValidator에 대해 정의 .. 왜 시험은 통과합니까? 해당 개체가 유효하지 않습니다. 이해할 수 없습니다.감사합니다.
실제 질문과 밀접한 관계가있는 것은 아니지만 정규식과 문자열 길이 검사기 모두 null로 질식합니다. 이는 유효하지 않은 유효성 검사기가 중복됨을 의미합니다. –
그리고 다시 말하자면, 정규식은 당신이 생각하는 것을 아마하지 않을 것입니다. "[a-z] | [A-Z] | [0-9] 문자 그대로 가능한 모든 문자열이 수표를 전달합니다. 나는 "^ [a-zA-Z0-9] {5,25} $"가 당신이 원하는 것에 더 가깝다고 생각합니다. 당신이 원하는 것은 사용자 이름이 글자와 숫자 만 지키도록하는 것입니다. 또한 문자열 길이 검사를 덮어서 하나의 유효성 검사기로 안내하는 이점이 있습니다. –