在 Wiremock 中使用 ResponseTransformer 始终得到空响应

Always get empty response by using ResponseTransformer in wiremock

我在使用 Wiremock 时遇到问题。我需要从请求正文中获取一个字段并将其显示在响应中。

据我了解,我需要扩展 Response Transformer class,然后在 stubFor 方法中使用此转换器。但是当我尝试它时,我总是得到空洞的回应。另外我不确定如何从请求正文中只获取一个字段,因为只有 getBodyAsString() 方法。

我的请求是这样的

{
    "command":"doThis",
    "id":"asfksdjdskj85495848"
}

这是我的代码,只是为了 return 所有请求正文的响应

@Override
public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource fileSource, Parameters parameters) {
    return new ResponseDefinitionBuilder()
            .like(responseDefinition)
            .but()
            .withBody(request.getBodyAsString())
            .build();
}


@Override
public boolean applyGlobally() {
    return false;
}

@Override
public String getName() {
    return "idTransformer";
}

...
stubFor(post(urlEqualTo("/commands"))
            .withHeader("token", matching(".*"))
            .willReturn(aResponse()
                    .withStatus(200)
                    .withHeader("Content-Type", "application/json")
                    .withTransformers("idTransformer")));

我在日志中看到了这个

匹配的响应定义:

{
  "status" : 200,
  "transformers" : [ "idTransformer" ]
}

但是响应总是空的。您能否告知我做错了什么以及如何从请求正文中仅获取一个字段 "id"

我发现我的代码有错误。我为 .extension 使用了错误的地方。这是正确的代码

public class myMock {

 private static WireMockServer wireMockServer;


 public static void main(String args[]){

    wireMockServer = new WireMockServer(WireMockConfiguration.
            options().notifier(new 
ConsoleNotifier(true)).extensions(IdTransformer.class));

stubFor(post(urlEqualTo("/api/commands/vehicles/FAKEBMWVEHICLE001"))
            .willReturn(aResponse()
                    .withTransformers("idTransformer")
                  ));
}