Spring-cloud-контракт установленного состояния

Я пытаюсь использовать сценарии (также называемые состояниями) при проверке контрактов на стороне потребителя. Сценарии определяются в весенних облачных контрактах с использованием префикса номера для скриптов groovy, как сказано в документации:

my_contracts_dir\
    scenario1\
        1_login.groovy
        2_showCart.groovy
        3_logout.groovy

В результате в json-файлах Wiremock я вижу, что добавлено поле "newScenarioState", например:

{
  "uuid" : "34a829d1-adf4-41e4-b7d9-6ee66d7de8bc",
  "request" : {
    "url" : "/foo/demo",
    "method" : "GET"
  },
  "response" : {
    "status" : 200,
    "body" : "[{\"model\":{\"address\":\"Address\",\"name\":\"String\"}}]",
    "headers" : {
      "Content-Type" : "application/json"
    }
  },
  "scenarioName" : "Scenario_contracts",
  "requiredScenarioState" : "Step2",
  "newScenarioState" : "Step3"
}

Вопрос, как я могу использовать эти состояния при написании потребительского интеграционного теста? Допустим, я хочу, чтобы концевые выключатели установили "Шаг 3". Как я могу сделать это в тесте интеграции потребителей?

Дополнительная информация: в тесте интеграции потребителя (который является тестом Junit) я использую StubRunnerRule вместо @AutoConfigureStubRunner. Поэтому я ожидаю, что с помощью этого правила я смогу использовать API для установки состояния заглушки. Но я ничего не нашел.

1 ответ

Вы можете переключить сервер в состояние, отправив соответствующие запросы. Если вы хотите переключить состояние с шага 1 на шаг 2, то вам нужно отправить правильный запрос, который инициирует переход с шага 1 на шаг 2. В примере, который вы показываете, вам нужно будет отправлять запросы, которые будут выполнять переход от шага 1 к шагу 2, а затем от шага 2 к шагу 3. В последнем случае это будет сообщение GET, как описано в заглушке WireMock. Помните, однако, что тогда вы переходите к вопросам, связанным с государством. Ваша заглушка будет разделена между вашими тестами - не забудьте передать аннотацию @DirtiesContext в ваших тестах, чтобы гарантировать, что новый контекст будет порожден, и вы сможете настроить свои заглушки так, как вы хотите.

Последнее замечание - старайтесь не использовать тесты с отслеживанием состояния, а просто разбейте проблему на отдельные этапы, которые вы можете проверить самостоятельно. Таким образом, вы можете проверить эти вещи быстро и параллельно. Для тестирования по контракту не обязательно иметь какое-либо состояние на стороне заглушки.

Другие вопросы по тегам