我写了一个ConstraintValidator,它将从yaml文件中读取键值对。该代码在运行时可正常运行,但在测试期间不起作用。我尝试了MockitoJUnitRunner和SpringRunner类。
我在CustomConverters实现中使用了相同的逻辑,该逻辑能够在运行时和测试期间读取键值对。
请告知您如何使用配置属性测试ConstraintValidator。
代码:
@ConfigurationProperties(prefix="gender")
public class GenderValidator implements ConstraintValidator<Gender, String> {
private Map<String, String> type = new HashMap<String, String>();
@Override
public void initialize(Gender gender) {
}
@Override
public boolean isValid(String value, ConstraintValidatorContext ctx) {
return getType().containsKey(value);
}
public Map<String, String> getType() {return type; }
}
配置
gender:
type:
M: male
F: female
TestCode:
Set<ConstraintViolation<GenderDetails>> constraintViolations =
validator.validate(payload);
assertThat (constraintViolations.isEmpty(), is(true) );
AssertThat总是返回错误。
注意:我已经在配置类下配置了PropertySourcesPlaceholderConfigurer,当我测试CustomConverter时可以正常工作。
感谢您的帮助。