我在合同中定义了查询参数。我需要这个参数是可选的:
method 'GET'
url($(regex(urlRegex))) {
queryParameters {
parameter 'fitler': $(stub(regex(filterRegex)))
}
}
我希望此合约适用于包含/my/sample/url?fitler=some-filter-expression
过滤器的两个网址,而不包含/my/sample/url
等过滤器参数。
我怎样才能做到这一点?这甚至可能吗?
答案 0 :(得分:0)
到目前为止,这尚未在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中尝试过的,它运行平稳。