Pact Consumer / Provider, основанный на типе данных, а не на значении данных - PullRequest
0 голосов
/ 04 ноября 2019

В настоящее время мы используем Pact-Broker в нашем приложении Spring Boot с действительно хорошими результатами для наших интеграционных тестов. Наши тесты с использованием Pact-Broker основаны на вызове REST API и сравнивают ответ со значением в нашем поставщике, всегда используя формат JSON. Наша проблема в том, что сравниваемые значения находятся в БД, где данные довольно часто меняются, что заставляет нас очень часто обновлять тесты.

Знаете ли вы, можно ли просто проверить по типу данных?

Мы хотели бы проверить правильность формирования JSON и совпадения типа данных, например, если наш REST API выдает такой вывод:

[
  {
    "action": "VIEW",
    "id": 1,
    "module": "A",
    "section": "pendingList",
    "state": null
  },
  {
    "action": "VIEW",
    "id": 2,
    "module": "B",
    "section": "finished",
    "state": null
  }
}
]

Например,из предыдущего вывода мы хотели бы проверить следующее:

  • JSON правильно сформирован.
  • Все пары ключ / значение существуют на основе модели.
  • Значение соответствует определенному типу данных, например, что ключ action существует во всех записях и содержит строковый тип данных.

Знаете ли вы, если этоВозможно ли это сделать с помощью Pact-Broker? Я искал в документации, но я не нашел ни одного примера, как это сделать.

Заранее большое спасибо.

С уважением.

1 Ответ

0 голосов
/ 05 ноября 2019

Абсолютно! Первые две вещи, которые Pact всегда будет делать без какой-либо дополнительной работы.

То, о чем вы говорите, называется гибким соответствием [1]. Вы не хотите соответствовать значению , а типу (или регулярному выражению). Учитывая, что вы используете Spring Boot, вы можете посмотреть на различные средства сравнения, доступные для Pact JVM [2].

Я не уверен, что вы имели в виду, но просто для ясности, Pact и Pact Brokerотдельные вещи. Pact - это среда тестирования контрактов с открытым исходным кодом, а Pact Broker [3] - это инструмент, который помогает совместно использовать эти контракты с командой и сотрудничать с ними.

...