Wiremock 调用方法
Wiremock calling methods
有没有办法在每次服务器收到请求时调用 java 方法?
wireMockServer.stubFor(post(urlEqualTo("/testpost"))
.willReturn(onIncomingRequest()));
像这样,每次使用这个存根时服务器都会调用onIncomingRequest。
您可以通过编写自定义响应转换器来实现您想要的行为。响应转换器将查询 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 发出请求)
(最)正确的方法是实现 PostServeAction
。有关详细信息,请参阅 this documentation page and WireMock's test cases。
有没有办法在每次服务器收到请求时调用 java 方法?
wireMockServer.stubFor(post(urlEqualTo("/testpost"))
.willReturn(onIncomingRequest()));
像这样,每次使用这个存根时服务器都会调用onIncomingRequest。
您可以通过编写自定义响应转换器来实现您想要的行为。响应转换器将查询 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 发出请求)
(最)正确的方法是实现 PostServeAction
。有关详细信息,请参阅 this documentation page and WireMock's test cases。