Каптор описан тут:

Об использовании в проекте Интеграционное тестирование в проекте

TODO:

Введение

Я давно использую wiremock для мокирования внепроцессных зависимостей. Хотел бы поделиться с вами тем, как я это делаю.

Инструменты

Spring, spock. На котлине благодаря сахору проще описывать dsl для мокирования.

Сценарий

Менеджеры попросили сделать бэкдор в приложении, через которые мы отправляем сообщения.

Или свидетельство канарейки. Или уведомление товарищу менеджеру.

DSL для мокирования

Базовое описание моков в WireMock многословно, поэтому предлагается DSL, представленный в [wiremock-api-definition.kt].

Пример:

val methodCaptor = serverMock.method(withSuccess("""{}"""))
          ^                   ^               ^         ^
          |- объект захвата   |               |         |- описание ответа от мока
                              |               | - микирование
                              | - объект WireMockServer

Мокирование по Arrange Act Assert

Не указываю явно, просто проверяю url.

Перехват исходящих запросов

Использую каптор, подробнее можно посмотреть в статье. Просто упоминаю, так как это основной элемент, но подробно не буду повторяться. Цель этой штуку - отделить этап описания ответа, от проверки срабатывания мока. При этом каптор позволяет эффективно проверять все. Есть история запросов.

Delay

Если нужно установить задержку ответа, может быть полезно для

Пример с задержкой:

val methodCaptor = serverMock.method(
    withDelay(Duration.parse(delay), withSuccess("""{}"""))
)

Chain

Пример с цепочкой ответов:

val methodCaptor = serverMock.method(
    withConnectionReset(),
    withSuccess("""{}""")
)

Callbacks

Если нужно описать эммитирование ответа от системы, типа уведомление или встречный запрос.

Как можно проверить, что мы ответили?

Заключение

testingwiremockarticledraft