Mockserver: обратный вызов после получения запроса

Я использую Mockserver для тестирования службы HTTP, которая производит побочные эффекты асинхронно. Скажем, например, я тестирую ServiceA который предоставляет метод HTTP API в /api/status/{id}, Отдельно от возврата результата статуса вызывающей стороне API, ServiceA запускает асинхронный анализ, который вызывает ServiceB если выполнены некоторые условия. Допустим, для завершения этого асинхронного процесса требуется от нескольких миллисекунд до нескольких секунд.

В настоящее время мой код mockserver выглядит примерно так:

Long waitTimeoutSeconds = 5L;
Long start = System.currentTimeMillis();
HttpRequest[] asyncRequestsRetrieved = null;

while (start + (waitTimeoutSeconds * 1000L) < System.currentTimeMillis()) {
    asyncRequestsRetrieved = mockServer.retrieveRecordedRequests(HttpRequest.request().withPath("/service/b/path"));
    if (asyncRequestsRetrieved != null && asyncRequestsRetrieved.size > 0) {
        break;
    }
    Thread.sleep(50L);
}

assertNotNull(asyncRequestsRetrieved);
assertTrue(asyncRequestsRetrieved!!.size > 0);

Предоставляет ли Mockserver шаблон для выполнения действия (скажем, уведомления слушателя), когда запрос получен в заданной конечной точке, или опрос является единственным вариантом?

1 ответ

Если вы отправляете запрос на ServiceB в асинхронном режиме вы получите ответ, в этом случае опрос является единственным вариантом. Я полагаю, ваш ServiceB имеет 2 конечные точки: одну для создания задания и другую для проверки состояния задания, и, если оно готово, получите результат.

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