Я использую 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 шаблон для выполнения действия (скажем, уведомления слушателя), когда запрос получен в данной конечной точке, или это единственный вариант опроса?