#java #wiremock
Вопрос:
Я провожу тестирование с помощью Wiremock, и у меня есть следующий пример для POJO:
@Data public class DataResponse { private Supply supply; private static class Supply { private Listlt;TimeSeriesgt; timeSeries; } @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public static class TimeSeries { private LocalDate date; } }
И я заглушаю какой-то внешний API, который должен реагировать на это POJO как json:
DataResponse dataResponse = DataResponse.builder() .supply(DataResponse.Supply.builder() .timeSeries(List.of( DataResponse.TimeSeries.builder() .date("2021-11-16") build() )) .build() .build() String jsonDataResponse = mapper.writeValueAsString(dataResponse); //mapper is instance of ObjectMapper stubFor(WireMock.get(urlEqualTo("/someUrl")) .willReturn(aResponse() .withBody(jsonDataResponse)));
Проблема в том, что когда я выполняю сериализацию с помощью ObjectMapper, я получаю «Временные ряды» вместо «временные ряды». Есть ли какой-либо способ получить правильный формат строки JSON только с изменениями в тестовом файле?
Ответ №1:
timeSeries
это поле Supply
, вы должны изменить место @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
, перейти в Supply
класс, как показано ниже
@Data public class DataResponse { private Supply supply; @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) private static class Supply { private Listlt;TimeSeriesgt; timeSeries; } public static class TimeSeries { private LocalDate date; } }