使用wiremock用有效负载模拟请求



我目前正在尝试使用Wiremock模拟外部服务器。我的一个外部服务器端点接收有效负载。该终点定义如下:

def sendRequestToMockServer(payload: String) = {
for {
request_entity <- Marshal(payload).to[RequestEntity]
response <- Http().singleRequest(
HttpRequest(
method = HttpMethods.GET,
uri = "http://localhost:9090/login",
entity = request_entity
)
)
} yield {
response
}
}

为了使用Wiremock模拟这个端点,我编写了以下代码:

stubFor(
get(urlEqualTo("/login"))
.willReturn(
aResponse()
.withHeader("Content-Type","application/json")
.withBodyFile("wireMockResponse.json")
.withStatus(200)
)
.withRequestBody(matchingJsonPath("requestBody.json"))
)

其中我在requestBody.json文件中定义了请求主体。

但当我运行测试时,我不断收到一个错误,指示找不到请求的Url。

我认为这个错误与这行withRequestBody(matchingJsonPath("requestBody.json"))有关,因为当我对它进行注释时,错误就会消失。

关于如何解决这个问题,有什么建议吗?

matchingJsonPath不会在提供的文件路径中填充文件,而是评估提供的JsonPath。请参阅文档。

我不完全确定是否有办法将请求主体提供为.json文件。如果您将文件的内容复制到withRequest(equalToJson(_yourJsonHere_))中,它能工作吗?如果是这样,您可以将文件内容作为定义之上的JSON字符串获取,并将其提供给函数(或者我想,制作一个函数来从.JSON文件返回JSON字符串(。

此外,您还可以制作一个自定义的请求匹配器来为您进行解析。我想只有在以上方法不起作用的情况下,我才会推荐这种方法。

相关内容

  • 没有找到相关文章

最新更新