老實說,我發現擴展有點混亂,與Fluent驗證器本身一樣(這只是我的看法)但是一旦你習慣了它,擴展和產品是有用的。
對於您的問題, 需要
一個。第一個說法,說驗證者已經設置了什麼字段/屬性
b。違反/繼承規則驗證的對象。
請參閱下面的代碼。
[TestFixture]
public class Tests
{
[Test]
public void NameEqualTest()
{
var v = new PersonValidator();
var p = new Person() {Name1 = "Name2", Name2 = "Name2"};
//I prefer this..
//ValidationResult validationResult = v.Validate(p);
//Assert.True(validationResult.IsValid);
v.ShouldNotHaveValidationErrorFor(person => p.Name1, p);
}
}
使用ShouldNotHaveValidationErrorFor因爲它是不易混淆.. 當2種性能是相等的,試驗合格。即沒有驗證錯誤。
當2個屬性不相等時,會出現錯誤。
public class Person
{
public string Name1 { get; set; }
public string Name2 { get; set; }
}
public class PersonValidator : AbstractValidator<Person>
{
public PersonValidator()
{
RuleFor(x => x.Name1).Equal(x => x.Name2)
.WithMessage("names are not equal");
}
}
如果轉到ShouldHaveValidationErrorFor(..)的定義它接受哪些參數? – Spock
之一:(此FluentValidation.IValidator驗證器,System.Linq.Expressions.Expression >表達,TValue值)和(此FluentValidation.IValidator 驗證器,System.Linq.Expressions.Expression >表達,T objectToTest) –
謝謝,看來你需要2個參數。請參閱下面的答案。 – Spock