MockServer проверяет с помощью нескольких сопоставителей тела

Я использую сопоставления тела MockServer для проверки параметров тела запроса конечной точки . Некоторые свойства могут быть сопоставлены точно, но для других может потребоваться отдельный subString или regex, поскольку часть этого свойства неизвестна. Например, строка даты и времени может иметь известную дату, но неизвестное время.

Однако при нескольких вызовах withBody() метод verify проходит, если проходит один или несколько сопоставителей. Как реализовать логическое И вместо ИЛИ?

mockServer.verify(
    request()
        .withPath(url)
        .withMethod("POST")
        .withBody(
            json(
                "{\"firstName\": \"foo\",\"lastName\": \"bar\"}",
                MatchType.ONLY_MATCHING_FIELDS))
        .withBody(
            // Need subString because we don't know the time and only want to validate the date
            subString("\"order_date_time\": \"2021-04-15")));

person DV82XL    schedule 16.04.2021    source источник


Ответы (1)


Чтобы выполнить логическое И для нескольких критериев сопоставления тел, вам нужно вызвать метод verify() несколько раз:

private void verifyOrderPlaced() {
  verifyName();
  verifyOrderDate();
}

private void verifyName() {
  mockServer.verify(
      request()
          .withPath(url)
          .withMethod("POST")
          .withBody(
              json(
                  "{\"firstName\": \"foo\",\"lastName\": \"bar\"}",
                  MatchType.ONLY_MATCHING_FIELDS)));
}

private void verifyOrderDate() {
  mockServer.verify(
      request()
          .withPath(url)
          .withMethod("POST")
          .withBody(
              subString("\"order_date_time\": \"2021-04-15")));
}
person DV82XL    schedule 17.04.2021