匹配所有项的 PactDslJsonArray 根级数组
PactDslJsonArray root level arrays that match all items
我可以成功地使用 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")
谢谢
段
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")
...
}
如果需要在不同的 class 之间共享,请创建一个可以共享的 InteractionUtils class。在我看来,这是最好的方法,因为编译器确保在创建交互时不会出错,这是整个框架的重点;减少人为错误。
我可以成功地使用 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")
谢谢
段
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")
...
}
如果需要在不同的 class 之间共享,请创建一个可以共享的 InteractionUtils class。在我看来,这是最好的方法,因为编译器确保在创建交互时不会出错,这是整个框架的重点;减少人为错误。