Пакт 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, чтобы улучшить работу. Надеюсь, это поможет.