有没有办法在每次服务器收到请求时都调用java方法?
wireMockServer.stubFor(post(urlEqualTo("/testpost"))
.willReturn(onIncomingRequest()));就像这样,所以服务器会在每次使用这个存根时调用onIncomingRequest。
发布于 2021-05-21 23:18:59
您可以通过编写自定义响应转换器来实现所需的行为。响应转换器将查询WireMock的请求管理端点以检索最新的请求,并解析该数据以形成响应。
伪码:
public class LastRequestBody extends ResponseTransformer {
public String getName() {
return "LastRequestBody";
}
@Override
public Response transform(Request request, Response response, FileSource files, Parameters parameters) {
// Set up some client
String wmRequests = "http://127.0.0.1:8080/__admin/requests" // update to whatever your WM base url is
OkHttpClient client = new OkHttpClient();
String url = HttpUrl.parse().newBuilder().build().toString();
okhttp3.Response okhttpResponse = client.newCall(okHttpRequest).execute();
// Parse WM response into JSON
JSONParser parser = new JSONParser();
JSONObject responseObj = (JSONObject) parser.parse(okhttpResponse.body().string());
JSONArray requests = (JSONArray) responseObj.get("requests");
JSONObject mostRecentRequest = (JSONObject) requests[0];
String mostRecentRequestBody = mostRecentRequest.get("request").get("body").toString();
// Return response that looks like the original request/response
return Response.Builder.like(response).but().body(mostRecentRequestBody.toJSONString()).build();
}
}上面的代码可能不是100%正确的,但大纲应该足够坚实。
查看WM管理页面,了解有关查询all requests.的更多信息(其他假设-我使用JSONSimple进行解析,使用OkHttp3向WM发出请求)
发布于 2021-05-24 17:05:17
(最)正确的方法是实现PostServeAction。详细信息请参见this documentation page和WireMock's test cases。
https://stackoverflow.com/questions/67637556
复制相似问题