У меня есть следующая иерархия:
public class A extends B {
@Valid
public A(String languageCode, C token) {
super(languageCode, token);
}
}
У класса B есть код языка вызова свойств, который должен проверяться с помощью @NotEmpty, только если у службы есть @Validated ({RequiringLanguageCode.class})
public class B extends D {
private String languageCode;
@Valid
public B(String languageCode, C token) {
super(token);
this.languageCode = languageCode;
}
@NotEmpty(groups = {RequiringLanguageCode.class})
public String getLanguageCode() {
return languageCode;
}
}
Теперь D - это базовый класс, который имеет свойство C, которое должно быть проверено как NotNull, а также значения, которые находятся внутри класса C.
public class D {
private C token;
@Valid
public D(C token) {
this.token = token;
}
@NotNull
public C getToken() {
return token;
}
}
Класс C содержит дваСтрока, которая проверяется как @NotEmpty:
public class C {
private String value1;
private String value2;
public C(String value1,
String value2) {
this.value1 = value1;
this.value2 = value2;
}
@NotEmpty
public String getValue1() {
return value1;
}
@NotEmpty
public String getValue2() {
return value2;
}
}
При попытке проверить это с помощью mockito значения класса C не проверяются, если значения токена (value1 и value2) пусты.
Может ли кто-нибудь мне помочь? Кто-нибудь имеет представление о том, что происходит?
Тест состоит в следующем:
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("test")
public class ATest {
@Autowired
private AAssembler aAssembler;
@Mock
A request;
@Mock
C token;
@Test
public void test() {
when(token.getValue1()).thenReturn("");
when(token.getValue2()).thenReturn("key");
when(request.getToken()).thenReturn(token);
assertThatIllegalArgumentException()
.isThrownBy(() -> aAssembler.build(request));
}
}
AAssembler аннотируется как @Validated ({RequiringLanguageCode.class})
Причина, по которой я запускаю исключение IllegalArgumentException вместо ConstraintViolationException, выходит за рамки этой проблемы.Вместо этого я улавливаю нарушение ограничения и выдает исключение IllegalArgumentException.
Метод сборки Assembler также имеет ограничение, помеченное как:
public Response build(@Valid @NotNull A request) {
....
}
Я был бы очень благодарен, если кто-нибудь может мне помочь.В любом случае, спасибо.