Groovy Spring Contract DLS превращает строку в JSON

У меня есть следующий сценарий генерации контракта:

VALID_JSON_STRING = '{}'
[
        Contract.make {
            name("insertSomething_ShouldReturnHttp200")
            description("POST should do sth")
            request {
                method 'POST'
                url REQUEST_URL
                body(
                        value: VALID_JSON_STRING
                )
                headers {
                    contentType(applicationJson())
                }
            }
            response {
                status 200
                headers {  contentType(applicationJson()) } }
        }
]

Но он компилируется в:

@Test
public void insertSomething_ShouldReturnHttp200() throws Exception {
    // given:
        MockMvcRequestSpecification request = given()
                .header("Content-Type", "application/json")
                .body("{\"value\":{}}");

    // when:
        ResponseOptions response = given().spec(request)
                .post("...");

    // then:
        assertThat(response.statusCode()).isEqualTo(200);
        assertThat(response.header("Content-Type")).matches("application/json.*");
}

Обратите внимание на .body("{\"value\":{}}"); здесь.

Вместо этого должен быть .body("{\"value\":\"{}\"}");. Он не должен преобразовывать строку JSON в фактический JSON. Как мне предотвратить это?

EDIT: It was labeled as a bug now: https://github.com/spring-cloud/spring-cloud-contract/issues/652

Каков фактический контракт вашей конечной точки API в Controller, вы пишете облачный контракт для пустого тела?

Yogendra Mishra 12.05.2018 00:04

@YogendraMishra Нет, тогда я бы вернул код 204 без тела. Я возвращаю тело со свойством, содержащим строку JSON. Сценарий использования для этого - имитация базы данных NoSQL в SQL до тех пор, пока мы не сможем перейти к реальной базе данных NoSQL.

Phil 12.05.2018 09:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
98
0

Другие вопросы по теме