Tôi có các quy tắc tương tự cho một số thuộc tính trong nhiều đối tượng mô hình và tôi muốn thay thế chúng bằng trình xác thực thuộc tính tùy chỉnh để tránh trùng lặp mã trong các thử nghiệm đơn vị.Làm thế nào để kiểm tra đơn vị tài sản đơn giản có bộ xác thực?
Tôi có validator của tôi sở hữu:
public class IntIdPropertyValidator: PropertyValidator
{
public IntIdPropertyValidator()
: base("Property {PropertyName} should be greater than 0")
{
}
protected override bool IsValid(PropertyValidatorContext context)
{
var value = (int)context.PropertyValue;
return value > 0;
}
}
và dây điện nó lên trong lớp validator mô hình:
public class SomeRequestValidator : AbstractValidator<CreateWordRequest>
{
public SomeRequestValidator()
{
RuleFor(x => x.Id).SetValidator(new IntIdPropertyValidator());
}
}
Cố gắng để kiểm tra:
[Test]
public void Validate_IdHasValidator_Success()
{
Init();
validator.ShouldHaveChildValidator(x => x.Id, typeof(IntIdPropertyValidator));
}
Nhưng thử nghiệm luôn luôn thất bại.
Vì vậy, làm cách nào để kiểm tra trình xác thực đó thực sự được đặt cho Id thuộc tính?
Vâng, vâng, tôi biết, và đó là cách tôi đã kiểm tra trình xác thực tùy chỉnh mà chính nó. Nhưng vấn đề là bây giờ tôi không muốn làm điều đó cho mỗi lớp mô hình mà có sự chống đỡ với người xác nhận đó. Tôi muốn kiểm tra nếu validator thực sự được thiết lập cho các prop, và không kiểm tra nó nếu nó hoạt động chính xác, cuz đó là những gì kiểm tra của trình duyệt tính hợp lệ tùy chỉnh làm. – liri2006
@ liri2006 Tôi đã cập nhật câu trả lời của mình bằng cách xác minh bạn đang tìm kiếm ... Tôi cũng giải thích lý do bạn không nên làm như vậy .... –
Điều đó cực kỳ hữu ích! Cả mã và giải thích. – liri2006