Mockserver:收到请求后回调

时间:2018-02-22 21:46:17

标签: java testing automated-tests mockserver

我正在使用Mockserver来测试异步生成副作用的HTTP服务。我们举例来说,我正在测试ServiceA,它在/api/status/{id}公开了一个HTTP API方法。除了将状态结果返回给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 个答案:

答案 0 :(得分:0)

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