如何使用Wiremock使用任何静态数据文件检查请求中的path参数?

问题描述 投票:0回答:1

我创建了一个存根来测试API说:http://localhost:8080/test/ {customerName}

使用如下:

wireMock.stubFor(get(urlPathMatching(/test/([A-Z0-9]{10})))
                .willReturn(aResponse().withStatus(OK).withBody("Hello World!"))
        );

我需要做两件事:

  1. 虽然p提供标头和查询参数检查,但如果我需要检查或提取路径参数客户名称我将如何做到这一点?
  2. 如果我无论如何提取客户名称,那么我将如何检查该客户名称是否存在于特定数据中。 (可能是一个大字符串,数组或文件包含客户名称)。

我尝试扩展->自定义请求匹配器,但无法实现上述任何一项。

在第一个问题是您甚至无法使用stubFor(get(url...创建存根您必须使用名称为自定义请求匹配器的stubFor(requestMatching..创建。

wiremock
1个回答
0
投票

标准功能将能够匹配URL的customer部分并在响应中重用它。在下面的JSON示例中,这是实现的:

{
    "request": {
        "method" : "ANY",
        "urlPattern": "/test/([a-z]*)"
    },
    "response": {
        "status": 200,
        "body": "Hello World: {{request.path.[1]}}",
        "transformers": ["response-template"]
    }
}

发送请求:http://localhost:8080/test/someclientname将导致以下响应:Hello World: someclientname

可以创建自定义响应模板,该模板使用标准响应模板手柄功能来解析参数并使用该信息来获取特定文件,或者在不可用时使用通用文件。在高层次上,这个想法在WireMock Google Groups post中被描述。

© www.soinside.com 2019 - 2024. All rights reserved.