Я пытаюсь добиться следующего:
Я хочу убедиться, что конкретный узел в теле («запись») имеет от минимального до максимального количества прямых подузлов, называемых «контентом» (от 1 до 10).узлы).Меня не волнует, что находится в этих подузлах, какое у них значение или сколько у них подузлов.
Так как я новичок в пакте и не знаю, как сопоставить что-то подобное, я надеюськто-то может мне помочь.Заранее спасибо.
Edit1:
Я использую сопоставление узлов одного из моих коллег, построенного следующим образом:
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
добавляет правило сопоставления регулярных выражений для сопоставителей тела.
Я также рассмотрел: https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-consumer-junit где maxArrayLike / minArrayLike выглядит многообещающе, но я не знаю, как применить это к своему делу.
Edit2:
Теперь у меня есть очень крутой 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 добавляет MinMaxTypeMatcher к категории тела с путем к узлу.Реальное поведение этого: оно соответствует типу, минимуму и максимуму самых внутренних узлов $.feed
.Например: $.feed.0.title
, $.feed.1.link
, ..., $.feed.6.entry.0.title
Но на самом деле я хочу убедиться, что $.feed
имеет минимальное и максимальное количество подузлов.Как мне этого добиться?