7

我在合同中定义了查询参数。我需要这个参数是可选的:

method 'GET'
    url($(regex(urlRegex))) {
        queryParameters {
            parameter 'fitler': $(stub(regex(filterRegex)))
        }
}

我希望这个合同适用于带有 filter like/my/sample/url?fitler=some-filter-expression和没有 filter param like的 URL /my/sample/url

我怎样才能做到这一点?这甚至可能吗?

4

1 回答 1

1

到目前为止,这在 WireMock 规范中没有明确定义。但是,您有一个使用正则表达式的解决方法,通过使用urlPathPattern属性(在 JSON 存根中)指定 URL。请参阅下面的示例。

{
    "request": {
        "method": "GET",
        "urlPathPattern": "/myapp/users(\\?((a-zA-Z\\d\\_\\-)+\\=(a-zA-Z\\d\\_\\-)+)(\\&(a-zA-Z\\d\\_\\-)+\\=(a-zA-Z\\d\\_\\-)+)+)?"
    },
    "response": {
        "status": 200,
            "bodyFileName": "users.json",
            "headers": {
            "Content-Type": "application/json"
        }
    }
}

观察 URL 末尾的可选部分,它查找典型的 URL 查询结构。这个,我已经在wiremock中试过了,运行流畅。

于 2019-03-25T07:34:53.030 回答