代码之家  ›  专栏  ›  技术社区  ›  KnechtRootrecht

pact体匹配-匹配节点数

  •  1
  • KnechtRootrecht  · 技术社区  · 6 年前

    我努力做到以下几点:

    我想验证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

    但我真正想确认的是 饲料 具有最小和最大子节点数。我怎样才能做到这一点?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Beth Skurrie    6 年前

    听起来你是想用pact来做功能测试,而不是契约测试。一般来说,您不应该编写关心数组中有多少项的测试。读一下这两个链接,让我知道你的进展。

    另外,如果你还没有加入我们的slack.pact.io。