@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}");
}
}
单元类在我的xml中有define的实例。
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
我的方法付款用
注释@CreditCardNumber(message="{error.invalid.cardNumber}")
public String getCardNumber() {
return this.cardNumber;
}
此测试在线失败,说约束违规为空。我认为它不应该是空的吗?
有什么问题? 什么样的数据无法进行信用卡验证?
答案 0 :(得分:0)
null
被视为Bean Validation和Hibernate Validator中定义的大多数约束的有效值。
因此,如果您没有为cardNumber
属性赋值或使用@NotNull
注释它,则不会出现约束违规(顺便说一句。您的列表似乎有点奇怪,{ {1}}来自?)
command
的验证程序使用Luhn algorithm检查信用卡号。