2011-06-22 12 views
0
@Autowired 
private Validator validator; 

    @Test 
     public void testValidateMethodOfPaymentBadCreditCard() { 
      final MethodOfPayment mop = new MethodOfPayment(); 
      command.setDescription("1234567890"); 
      final Set<ConstraintViolation<MethodOfPayment>> constraintViolations = this.validator.validateProperty(mop, "cardNumber", Default.class); 
      Assert.assertFalse(constraintViolations.isEmpty()); 
      for (final ConstraintViolation<MethodOfPayment> cv : constraintViolations) { 
       Assert.assertEquals(cv.getMessage(), "{error.invalid.cardNumber}"); 
      } 
     } 

ユニットクラスはmy xmlにdefineのインスタンスを持っています。hibernateバリデーター4.2.0ファイナル@CreditCardNumber

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/> 

私methodofpaymentは、このテストでは、制約違反が空であると言っラインに失敗し

@CreditCardNumber(message="{error.invalid.cardNumber}") 
    public String getCardNumber() { 
     return this.cardNumber; 
    } 

と注釈されています。私はそれが空ではないはずだと思った?

どうしたのですか? クレジットカードの確認に失敗したデータの種類は?

答えて

0

nullは、Bean ValidationとHibernate Validatorで定義されているほとんどの制約に対して有効な値とみなされます。

あなたはcardNumberプロパティに値を割り当てたり、@NotNullとそれに注釈を付けていない場合したがって、あなたは(ところで。リスティングは少し奇妙に思える、commandはどこから来るのでしょうか?)制約違反を取得することはありません

@CreditCardNumberのバリデータでは、Luhn algorithmがクレジットカード番号の確認に使用されます。

+0

こんにちは、コマンドはmop.setDescriptionである必要があります。うん、誤りを指摘してくれてありがとう。私はカード番号ではなく説明を設定していたので、決して検証されませんでした。 –

関連する問題