当前位置: 首页 > 知识库问答 >
问题:

Wiremock withQueryParam与正则表达式不匹配

樊俊悟
2023-03-14

我正试图做到这一点:

    stubFor(get("/my/path")
      .withQueryParam("paramName", matching(format("^(%s)|(%s)|(%s)$", v1, v2, v3)))
      .willReturn(okJson(RESPONSE)));

我得到一个错误:

GET                                                        | GET
/my/path                                                   | /my/path?paramName=v1Value  <<<<< URL does not match
                                                           |
Query: paramName [matches] ^(v1Value)|(v2Value)|(v3Value)$ | paramName: v1Value

我已经测试了正则表达式,它是有效的。我还进行了调试,发现regexpatern也匹配。但出于某种原因,我仍然会犯这个错误。我认为我用错了。

我尝试了一个更简单的版本,但也没有成功:

stubFor(get("/my/path")
  .withQueryParam("paramName", equalTo("v1Value"))
  .willReturn(okJson(RESPONSE)));

有什么想法吗?提前感谢。

共有1个答案

拓拔谭三
2023-03-14

WireMock文档建议仅在url路径上进行匹配,并分别在查询参数上进行匹配。

那看起来有点像...

    stubFor(get(urlPathEqualTo("/my/path"))
      .withQueryParam("paramName", matching(format("^(%s)|(%s)|(%s)$", v1, v2, v3)))
      .willReturn(okJson(RESPONSE)));

如果我没记错的话,只使用stubFor(get(“my/url”)默认为使用urlEqualTo,它检查路径和查询参数的相等匹配

 类似资料:
  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 我使用wiremock来模拟某些请求及其相应的响应,但我试图添加一个正则表达式。不幸的是,这只会引发一个异常,表明请求不匹配。 我也试过了 我发送的请求是

  • 我有一根线,比如: 如何匹配每行的最后一个?顺便说一句,这是我试图在Sublime的文本中做到的。这些值不一致,就像我在这里看到的,我有几百行要替换。 我尝试了,但这与相匹配。

  • 我正在尝试匹配以下正则表达式: 换句话说,一个单词边界后跟上面的任何字符串(可选地跟一个句点字符),后面跟一个单词边界。 我也在regex101上尝试过这一操作,但与数仍然不匹配:https://regex101.com/r/klkmwl/1 转义符并没有什么区别,我已经尝试使用十六进制转义序列来代替和符(如本问题所建议的)。为什么这不匹配?

  • 我有一个regex101正确工作的regex: 有2个匹配,如预期的。 现在我想用std的regex_token_iterator拆分相同的: 这可以很好地编译,但没有任何东西被打印到stdout。 我认为正则表达式必须以其他方式编写,你能指出我的错误吗?