Como prueba de validación DateTimeFormat primavera unidad

ab91:

Tengo una clase DTO la celebración de dos campos de fecha. Ambos están anotadas con un @NotNulle @DateTimeFormat.

Estoy haciendo TDD y me di cuenta que mi NotNullmensaje de error se devuelve con éxito pero cuando paso en una fecha en mi unidad de prueba se acepta casi cualquier cosa, incluso si no coincide con mi patrón.

Es interesante que cuando pruebo en mi forma thymeleaf funciona correctamente, dando ME volver el mensaje de error que espero con una fecha con formato incorrecto.

Estoy asumiendo que esto es algo que ver con la primavera no aplicar la prueba de la unidad DateTimeFormat cuando acabo el DTO, pero entonces ¿por qué mi trabajo no nula como se esperaba?

He proporcionado el código para el DTO debajo

import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.util.Date;

public class HourTracker {
@NotNull(message = "start time cannot be null")
@DateTimeFormat(pattern = "hh:mma")
private Date startTime;
@NotNull(message = "end time cannot be null")
@DateTimeFormat(pattern = "hh:mma")
private Date endTime;

//getters and setters
}

Prueba de unidad:

public class HourTrackerTest {
private static final String HOURS_INPUT_FORMAT = "hh:mma";
private Validator validator;
private HoursTracker tested;

@Before
public void setUp() throws Exception {
    tested = new HoursTracker();
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    validator = factory.getValidator();
}

@Test
public void testValidTimeInputs() throws Exception {
    SimpleDateFormat timeFormatForDate = new SimpleDateFormat(HOURS_INPUT_FORMAT);
    Date validTimeInput = timeFormatForDate.parse("12:30pm");
    tested.setStartTime(validTimeInput);
    tested.setEndTime(validTimeInput);
    assertEquals("Start time was not correctly set", validTimeInput, tested.getStartTime());
    assertEquals("End time was not correctly set", validTimeInput, tested.getStartTime());
}

@Test
public void testNullStartTimeInputErrorMessage() throws Exception {
    tested.setStartTime(null);
    Set<ConstraintViolation<HoursTrackingForm>> violations = validator.validate(tested);
    assertFalse("No violation occurred, expected one", violations.isEmpty());
    assertEquals("Incorrect error message",
            "Please enter a valid time in AM or PM",
            violations.iterator().next().getMessage()
    );
}

@Test
public void testNullEndTimeInputErrorMessage() throws Exception {
    tested.setEndTime(null);
    Set<ConstraintViolation<HoursTrackingForm>> violations = validator.validate(tested);
    assertFalse("No violation occurred, expected one", violations.isEmpty());
    assertEquals("Incorrect error message",
            "Please enter a valid time in AM or PM",
            violations.iterator().next().getMessage()
    );
}

}
ab91:

Respuesta simple, no se puede probar una restricción fuera de la primavera del contenedor primavera. Yo estaba tratando de prueba en la forma en que pondría a prueba mis validaciones javax

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=221262&siteId=1
Recomendado
Clasificación