2016-06-23 3 views
1

:RuleForインサイド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); 
     }); 
    } 
} 

私はT、TPropertyにアクセスする必要があります。しかし、私は文字列のバリデータを作成したい。

誰でも手伝ってもらえますか?

答えて

0

それは2016年1月4日のようFluentValidationチームによってexplicitly supportedないのですが、これを回避する方法があります:

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)); 
関連する問題