2016-06-23 1 views
1

Comment puis-je valider:FluentValidation type Validé

[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); 
     }); 
    } 
} 

A l'intérieur du RuleFor j'ai besoin pour accéder au T, TProperty. Mais je veux faire un validateur pour les chaînes.

Quelqu'un peut-il m'aider?

Répondre

0

Ce n'est pas explicitly supported par l'équipe de FluentValidation en date du 4 Janvier 2016, mais il y a un moyen de contourner ceci:

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

Votre test ne fonctionne pas non plus parce que vous devez spécifier le nom du paramètre en option sur la validate invocation de méthode, comme suit:

var result = validator.Validate(nip, ruleSet: nameof(AddMerchantValidatorRuleSet.NIP));