1

我正在使用 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 是否公开模式以采取行动(例如,通知侦听器),还是轮询我唯一的选择?

4

1 回答 1

0

如果您以ServiceB异步方式发送请求,那么您将收到一些响应,在这种情况下,轮询是唯一的选择。我假设您ServiceB有 2 个端点,一个用于创建作业,另一个用于检查作业的状态,如果准备就绪,则获取结果。

于 2018-02-22T22:04:05.923 回答