Проверьте правильность типа данных с помощью сериализации - PullRequest
1 голос
/ 23 июня 2019

У меня есть POJO ниже,

@Setter
@Getter
public class OrderDto extends BaseDto {

    @JsonProperty( "products" )
    private final List<String> products;

    @JsonProperty( "basket_items" )
    private final List<BasketItemDto> basketItems;

    @JsonProperty( "timestamp" )
    @JsonDeserialize( using = JavaOffsetDateTimeDeserializer.class )
    @JsonSerialize( using = JavaOffsetDateTimeSerializer.class )
    private OffsetDateTime timestamp;

    @JsonProperty( "amount" )
    private BigDecimal amount;

    @JsonProperty( "shop_id" )
    private Integer shopId;

    ..........................

}

Я хотел бы проверить, является ли поле timestamp типом данных OffsetDateTime.

Возможно ли это и как мне написать об этом тест?

Ответы [ 2 ]

1 голос
/ 23 июня 2019

Я хотел бы проверить, является ли поле отметки времени типом данных OffsetDateTime.

Конечно. Немного гаданий здесь, но я думаю, что вы хотите / намерены сделать:

  • написать модульный тест, который показывает, что аннотации в вашем POJO / DTO работают как положено ...
  • при разборе некоторой строки JSON

Таким образом, точка здесь такова:

  • вы ищите пример JSON-данных, которые вы считаете действительными
  • затем вы пишете модульный тест, который использует Джексона для десериализации этой строки JSON в экземпляр вашего класса DTO
  • затем вы используете одно или несколько утверждений для проверки полей только что созданного OrderDTO

Чтобы добавить немного фона: имейте в виду, что здесь вы определяете только объект-держатель данных. У вашего DTO нет поведения, которое вы могли бы проверить. Единственное, что стоит проверить здесь:

  • когда вы делаете new() в Java и заполняете поля такого dto вручную и сериализуете в JSON, вы можете проверить, выглядит ли строка ожидаемым образом
  • или, как уже было сказано, наоборот: вы можете жесткий код строку JSON, десериализовать ее, а затем проверить / подтвердить, что свойства, которые вы ожидаете (основываясь на ваших знаниях о входящем Строка JSON) действительно отображается в вашем dto.

Наконец: если у вас нет правильной «входной» строки JSON, опасная, но допустимая альтернатива: сначала запишите этот тестовый пример, который сериализует известный объект в строку JSON. Затем удалите сериализацию этой строки и убедитесь, что десериализованный dto соответствует тому, который вы сериализовали.

0 голосов
/ 23 июня 2019

Где / когда вы хотите проверить / проверить это?Вы можете использовать проверку бобов для проверки полей вашего pojo.Вы также можете написать свой собственный валидатор для этого.Как проверить боб: https://www.baeldung.com/javax-validation Пример для пользовательской проверки бина с пружиной: https://www.baeldung.com/spring-mvc-custom-validator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...