当前位置: 首页 > 知识库问答 >
问题:

WireMock无法转换响应

湛骏祥
2023-03-14

我在使用WireMock时遇到了一个问题,我已经扩展了< code>ResponseTransformer并实现了所有需要的方法,如下所示:

public class TempResponseTransformer extends ResponseTransformer {

    @Override
    public Response transform(Request request, Response response, FileSource fileSource,
                              Parameters parameters) {
        return Response.Builder.like(response).but().status(404).body("1").build();
    }

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

    @Override
    public String getName() {
        return "temp-response-transformer";
    }
}

现在我想将这个特定的变压器应用于我写的存根之一,存根如下所示:

private static void initTempStub() {
    stubFor(post(urlPathEqualTo("/api/v1/temp"))
            .withHeader("AccessToken", matching("[a-zA-Z0-9]+"))
            .withHeader("CliendID", matching("[a-zA-Z0-9]+"))
            .withHeader("ClientSecret", matching("[a-zA-Z0-9]+"))
            .willReturn(aResponse()
                    .withTransformers("temp-response-transformer")));
}

当我启动服务并执行后调用时,我确实看到应用了转换器,但响应实际上并没有被转换。在启动服务时,我也尝试在config部分应用transformer,但这无济于事。

因此,我的问题是,我应该如何正确应用ReponseTransformer,以便转换我的回答?

共有1个答案

尉迟边浩
2023-03-14

好吧,我想我已经明白了。这里有一个问题(?)使用WireMock,我在查看内部结构时能够弄清楚,下面是我如何传递config:

new WireMockServer(wireMockConfig()
.extensions(TempResponseTransformer.class)
.options().notifier(new ConsoleNotifier(true)))

此代码的一个问题是,当您从wireMockConfig中调用options()时,它会创建 配置提取到单独的代码中,如下所示:<="">

    var wireMockConfig = new WireMockConfiguration();
    wireMockConfig
            .extensions(SamplesResponseTransformer.class)
            .notifier(new ConsoleNotifier(true));
 类似资料:
  • 我想使用具有大量数据的HTTP客户端来测试我们的应用程序。是否可以使用 WireMock 创建无限或几千兆字节长度的输出,而无需分配具有该大小的字节数组或字符串? 据我所知有三个的方法: 我已经尝试但我得到了以下异常: 另外两个需要一个巨大的内存数组或字符串,这也是我想要避免的。 我还检查了枚举,但它似乎不可扩展。

  • 我正在尝试配置Wiremock映射,以从请求中返回一个带有值的JSON响应。 请求很简单 它的映射是: 我收到回复: 而预期的是: 如果我切换到XML请求,模式

  • 我正在处理jBPM 7.22.0。最终的 我使用服务任务REST从这个api获取响应https://reqres.in/api/users/1 我想将此响应获取到一个对象中,因此我创建了这个类(或jBPM中调用的数据对象): 我在jBPM中创建了一个名为res的全局变量,该变量具有我要存储响应的数据对象的类型。因此,在我的REST服务任务的“任务”中,我有屏幕截图中的内容。 如您所见,我想将结果存

  • 我得到了错误 我在文件夹中执行此操作。当我在另一台计算机上运行相同的命令时,一切都很好。问题是什么?

  • 我用下面的json试过了,但是wiresck不能识别我的更改。我读了wiresck的留档,我看到他们说:JSON相等匹配基于JsonUnit,因此支持占位符。我也用JDK 8和JDK 13试过了,但是两者都不起作用 以下是详细信息 使用mock运行selenium测试时的结果(我通过执行了mock): 有人能在这里提出一些建议吗?谢谢你阅读我的问题。

  • 问题内容: 为什么写: 问题答案: 实现的对象是。 您要在其中覆盖的方法应将对象作为参数,而将其强制转换为。您的实现应描述如何与另一个进行比较。 要真正进行排序,您可能还需要制作工具,然后将实际逻辑复制粘贴到其中。