我努力做到以下几点:
我想验证body中的一个特定节点(“entry”)的直接子节点(1到10个节点)的数量是否在最小值和最大值之间。我不关心这些子节点中有什么,它们有哪些值,它们有多少子节点。
因为我是新人,不知道如何匹配这样的东西,我希望有人能帮助我。
提前谢谢。
Eddi1:
我用一个节点匹配器,我的一个同事建造如下:
return builder.given("given").uponReceiving("description").path(SERVICEPATH)
.query(query).method(METHOD_GET).headers(ACCEPT, REQ_ACCEPT).willRespondWith().status(200)
.matchHeader(HEADER_CONTENT_TYPE, RESP_HEADER_CONTENT_TYPE_REGEX).body(responseBody)
.matchBody(new PactDslXmlNodeMatcher().node("entry").node("content").value(".*")).toPact();
别让那激怒你,那
.matchBody
只需将该节点转换为典型的
$. + path + '[#text]'
-符号,其中
.value
将regex匹配器规则添加到体匹配器。
我还看了一眼:
https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-consumer-junit
maxarraylike/minarraylike看起来很有前途,但我不知道如何将其应用到我的案例中。
编辑2:
现在我有一个非常酷的pactdslwithprovider,如下所示:
return builder.given("Genereller Test").uponReceiving("Feed soll Eintraege enthalten").path(SERVICEPATH)
.query(query).method(METHOD_GET).headers(ACCEPT, REQ_ACCEPT).willRespondWith().status(200)
.matchHeader(HEADER_CONTENT_TYPE, RESP_HEADER_CONTENT_TYPE_REGEX)
.body(responseBody)
.matchBody(new PactDslXmlNodeMatcher().node("feed").minMaxType(minNumberNodesInFeed, maxNumberNodesInFeed))
.toPact();
方法“minmaxtype”使用节点的路径将minmaxtypemacher添加到body类别。
其实际行为:
它匹配
$.feed
. 像:
$.feed.0.title
,
$.feed.1.link
…
$.feed.6.entry.0.title
但我真正想确认的是
饲料
具有最小和最大子节点数。我怎样才能做到这一点?