PactDslJsonArray массивы корневого уровня, соответствующие всем элементам
Я могу успешно использовать PactDslJsonArray.arrayMaxLike(3,3), чтобы создать пакт, который проверяет максимум 3 возвращенных элемента.
"body": [
{
"firstName": "first",
"lastName": "last",
"city": "test",
},
{
"firstName": "first",
"lastName": "last",
"city": "test",
},
{
"firstName": "first",
"lastName": "last",
"city": "test",
}
]
"body": {
"$": {
"matchers": [
{
"match": "type",
"max": 3
}
]
...
Однако я хотел бы повторно использовать тело из другого запроса без необходимости повторного указания атрибутов.
DslPart body = new PactDslJsonBody()
.stringType("firstName","first")
.stringType("lastName","last")
.stringType("city", "test")
Я ищу что-то вроде:
PactDslJsonArray.arrayMaxLike(3,3).template(body)
вместо
PactDslJsonArray.arrayMaxLike(3,3)
.stringType("firstName","first")
.stringType("lastName","last")
.stringType("city", "test")
Спасибо
Дэн
1 ответ
Смысл DSL заключается в проверке взаимодействий Pact в коде. Использование шаблона как бы противоречит этой концепции. Я бы порекомендовал, чтобы, если у вас были одинаковые взаимодействия в нескольких местах, то наилучшим способом было бы добавить общую функцию для добавления указанного взаимодействия. Например:
private void personalDetailInteraction(DslPart part) {
return part.stringType("firstName","first")
.stringType("lastName","last")
.stringType("city", "test");
}
private void yourTest() {
personalDetailInteraction(
PactDslJsonArray.arrayMaxLike(3,3)
)
.stringType("blarg", "weee")
...
}
Если его необходимо разделить между различными классами, создайте класс InteractionUtils, который можно использовать совместно. На мой взгляд, это лучший способ сделать это, потому что компилятор не допускает ошибок при создании взаимодействий, что является своего рода точкой всей платформы; уменьшить человеческую ошибку.