2016-06-23 2 views
1

Как я могу проверить, что:FluentValidation Валиде типа

[Fact] 
public void ValidateLengthRuleSet_NipLengthIsLessThanTen_IsValidShouldBeFalse() 
{ 
    // Arrange 
    string nip = "12345"; 

    // Act 
    var result = _validator.Validate(nip, AddMerchantValidatorRuleSet.NIP.ToString()); 

    // Assert 
    result.IsValid.Should().BeFalse(); 
} 

public class NIPValidator : AbstractValidator<string> 
{ 
    public NIPValidator() 
    { 
     RuleSet(nameof(AddMerchantValidatorRuleSet.NIP),() => 
     { 
      RuleFor(nip => nip.ToString()).Length(10); 
     }); 
    } 
} 

Внутри RuleFor мне нужно получить доступ к T, TProperty. Но я хочу сделать валидатор для строк.

Может ли кто-нибудь мне помочь?

ответ

0

Это не explicitly supported командой FluentValidation по состоянию на 4 января 2016 года, но есть способ обойти это:

public class NIPValidator : AbstractValidator<string> 
{ 
    public NIPValidator() 
    { 
     RuleSet(nameof(AddMerchantValidatorRuleSet.NIP),() => 
     { 
      RuleFor(nip => nip).Length(10); 
     }); 
    } 
} 

Ваш тест также не работает, потому что вы должны указать необязательное имя параметра на validate вызов метода, например:

var result = validator.Validate(nip, ruleSet: nameof(AddMerchantValidatorRuleSet.NIP)); 
Смежные вопросы