我正在使用 Mockserver 来测试一个异步产生副作用的 HTTP 服务。例如,我正在测试ServiceA
在/api/status/{id}
. 与将状态结果返回给 API 的调用者不同,ServiceA
启动异步分析,ServiceB
如果满足某些条件则调用。假设完成此异步过程需要几毫秒到几秒钟。
目前,我的模拟服务器代码如下所示:
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 是否公开模式以采取行动(例如,通知侦听器),还是轮询我唯一的选择?