我正在使用Mockserver测试异步产生副作用的HTTP服务。例如,假设我正在测试ServiceA,该/api/status/{id}ServiceA处公开HTTP API方法。 ServiceB与将状态结果返回给API的调用者不同,如果满足某些条件,会启动一个异步分析,该异步分析调用。假设这个异步过程完成需要几毫秒到几秒钟的时间。

目前,我的模拟服务器代码看起来像这样:

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是否公开一种模式以采取措施(例如,通知侦听器),或者是轮询我的唯一选择?

最佳答案

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

关于java - Mockserver:收到请求后回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48937768/

10-11 01:38