2015-07-27 4 views
7

Я тестирует PUT с двумя string:FluentValidation Как проверить длину, если строка не равна нулю?

company.CurrencyCode = request.CurrencyCode ?? company.CurrencyCode; 
company.CountryIso2 = request.Country ?? company.CountryIso2; 

и я попытался с помощью следующего правила:

public UpdateCompanyValidator() 
{ 
    RuleSet(ApplyTo.Put,() => 
    { 
     RuleFor(r => r.CountryIso2) 
       .Length(2) 
       .When(x => !x.Equals(null)); 

     RuleFor(r => r.CurrencyCode) 
       .Length(3) 
       .When(x => !x.Equals(null)); 
    }); 
} 

как я не возражаю, чтобы получить null на эти свойства, но я хотел бы протестировать Length, когда имущество не является null.

Каков наилучший способ применения правил, когда свойство равно nullable, и мы просто хотим проверить, не является ли оно нулевым?

ответ

3

Одним из способов будут:

public class ModelValidation : AbstractValidator<Model> 
{ 
    public ModelValidation() 
    { 
     RuleFor(x => x.Country).Must(x => x == null || x.Length >= 2); 
    } 
} 
6

Я предпочитаю следующий синтаксис:

When(m => m.CountryIso2 != null, 
    () => { 
     RuleFor(m => m.CountryIso2) 
      .Length(2); 
    ); 
+0

Я думаю, этот код чист и имеет лучшую читаемость. – Rahatur

 Смежные вопросы

  • Нет связанных вопросов^_^