Инъекция макетов при использовании пружины ValidatorFactory - PullRequest
0 голосов
/ 17 марта 2020

Я хочу выполнить модульное тестирование проверки в поле в классе java, но безуспешно внедряю макеты в один из других валидаторов в классе

Ниже приведен класс, который я проверяю

public class DtoObject {

    public static final int A_MAX_LENGTH = 1000;

    @ValidId // this custom validator calls a service called proxyService
    private String id;

    private Map<Locale, @Size(max = A_MAX_LENGTH, message = ErrorMessage.MAX_LENGTH) String> description;
    }

Я хочу написать модульный тест для A_MAX_LENGTH во время насмешки над вызовом, который выполняется в ValidId

Вот мой тестовый код:

public class DtoObjectTest {

    private DtoObject dtoObject = new DtoObject();
    private ValidatorFactory validatorFactory;

    @InjectMocks
    private Validator validator;

    @Mock
    ProxyService proxyService;

    @BeforeEach
    private void createValidatorAndSetupCause() {
        validatorFactory = Validation.buildDefaultValidatorFactory();
        validator = validatorFactory.getValidator(); // this needs to receive mocks
        MockitoAnnotations.initMocks(this);
        Mockito.doReturn(Optional.of(dtoObject)).when(this.proxyService).getDetails(Mockito.anyString());
    }

    @AfterEach
    private void closeValidatorFactory() {
        validatorFactory.close();
    }

    @Test
    public void validateDtoObject_validDescription_noErrors() {
        DtoObject dtoObject = TestUtility.buildDtoObject();
        Set<ConstraintViolation<DtoObject>> violations = validator.validate(DtoObject);
        assertEquals(0, violations.size());
    }

Если кто-то мог бы указать, почему мои макеты для proxyService не были успешно введены в validator, что было бы очень признательно

...