我将 javax.validation 与 Spring 一起使用。在我的测试(常规)中,我明确创建了验证器。
import javax.validation.Validation
import javax.validation.Validator
import javax.validation.ValidatorFactory
ValidatorFactory factory = Validation.buildDefaultValidatorFactory()
Validator validator = factory.getValidator()
when:
Set<ConstraintViolation<User>> constraints = validator.validate(entity)
我的java验证器
public class EntityDynamicValidator implements ConstraintValidator<SomeConstraint, Entity> {
private GroupService groupService;
// This constructor is required, see the link bellow.
public UserDynamicEnumValidator() {
}
public UserDynamicEnumValidator(final GroupService groupService) {
this.groupService = groupService;
}
@Override
public boolean isValid(final Entity entity, final ConstraintValidatorContext context) {
Something something = groupService.findByValue(entity.getValue());
// Validate all this stuff
}
}
我需要度过一个春天service给验证者。
我有一个默认构造函数,因为存在问题验证器的 Spring 单元测试问题 https://stackoverflow.com/questions/50104995/spring-unit-test-issue-with-validator
我也尝试解决这个问题,但是这些测试对我来说完全是低级单元测试,我想避免太多的上下文。我什至无法使用你的方法。我这边的解决方案是将自定义 ConstraintValidatorBean 添加到 mockmvc 中。该自定义实现可以获取验证器类 Class 对象的列表,因此如果工厂尝试创建验证器,我会返回它的 Mockito.mock 版本而不是真实版本,我还可以查找期望设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)