我可以成功使用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")
由于
丹
答案 0 :(得分: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类。在我看来,这是最好的方法,因为编译器确保在创建交互时不会出错,这是整个框架的一个重点;减少人为错误。