Pact body match - сопоставить количество узлов - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь добиться следующего:

Я хочу убедиться, что конкретный узел в теле («запись») имеет от минимального до максимального количества прямых подузлов, называемых «контентом» (от 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 имеет минимальное и максимальное количество подузлов.Как мне этого добиться?

1 Ответ

0 голосов
/ 08 июня 2018

Похоже, вы пытаетесь использовать Pact для проведения функционального тестирования, а не контрактного теста.Вообще говоря, вы не должны писать тесты, которые заботятся о том, сколько элементов в массиве.Прочитайте эти две ссылки и дайте мне знать, как вы идете.

Кроме того, присоединяйтесь к нам на slack.pact.io, если вы этого еще не сделали.

...