Пакт JVM closeArray

У меня проблемы с closeArray в pact-jvm-consumer.

Принимая во внимание Json, как это, как должен быть построен статус "DslPart imeiResults = new PactDslJsonBody()".

{ 
   "Car": {
     "Price": 123,     
     "Features": [
         "rain sensor",
         "cruise control"
     ],
     "Id": "6500"
   }
}

Я пытался так:

    DslPart etaResults = new PactDslJsonBody()
           .object("Car")
                .integerType("Price",123)
                .array("Features")
                    .stringValue("rain sensor")
                    .stringValue("cruise control")
                .closeArray()
                .stringValue("Id","6500")
            .closeObject()
            .asBody();

Но это не работает, например.closeArray() не возвращает PactDslJsonBody, но DslPart, так что вы никогда не сможете получить ничего после.closeArray()? Я не понимаю, кто-то может показать код о том, как сделать это правильно?

1 ответ

Я предполагаю, что ваш stringValue после closeArray не работает?

К сожалению, при создании массива с использованием array функция, это на самом деле создает новый PactDslJsonArray и закрывая его, у этого класса нет возможности узнать, что является родителем, поэтому он просто возвращает общий суперкласс DslPart, что может вызвать некоторую путаницу. Что нужно сделать, так это DslPart вернуться к PactDslJsonBody с использованием asBody функция. Итак, ваш пример должен выглядеть примерно так:

DslPart etaResults = new PactDslJsonBody()
   .object("Car")
        .integerType("Price",123)
        .array("Features")
            .stringValue("rain sensor")
            .stringValue("cruise control")
        .closeArray()
        .asBody()
        .stringValue("Id","6500")
    .closeObject();

Теперь мы знаем, что это сбивает с толку, поэтому мы начали работать над новым DSL с использованием функций Lambda в Java 8, чтобы улучшить работу. Надеюсь, это поможет.

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