gpt4 book ai didi

java - 在wiremock中使用ResponseTransformer总是得到空响应

转载 作者:太空宇宙 更新时间:2023-11-04 09:25:21 24 4
gpt4 key购买 nike

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

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

我的请求是这样的

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

这是我的代码,用于返回所有请求正文作为响应

@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")
));
}

关于java - 在wiremock中使用ResponseTransformer总是得到空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57770804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com