【问题标题】:Ignoring certain elements in request during wiremock record mappings在wiremock记录映射期间忽略请求中的某些元素
【发布时间】:2021-02-22 04:43:58
【问题描述】:

我正在使用wiremock 来记录映射。我正在使用 proxyBaseUrl,因此当映射不存在时,它会被路由到代理并记录请求和响应。在我的请求中,我希望映射忽略一些与时间戳相关的请求对象项。这样,当创建映射时,我已经有timestamp 通配符,如\"timestamp\": \"${json-unit.any-string}\"。我的测试创建了不同的时间戳,我希望wiremock 在创建映射时忽略这些请求对象

当我运行测试时,会创建 100 个映射,并一个接一个地遍历它们,更新它们会很痛苦。所以我想提前训练记录映射以忽略某些请求对象。我该怎么做?

{
  "priority": 1000000,
  "request": {
    "method": "POST",
    "url": "/v1/computeserv/execution",
  },
  "response": {
    "proxyBaseUrl": "https://actual.computeserv.com:12345"
  }
}

【问题讨论】:

    标签: java mocking wiremock wiremock-standalone wiremock-record


    【解决方案1】:

    您需要写一个StubMappingTransformer 来处理自动修改您保存的请求。您可以在 WireMock 上的 Transforming Generated Stubs 文档中阅读更多相关信息。

    此外,许多现代 IDE 包含一些全局查找和替换功能,包括通过正则表达式进行搜索。如果您预计不必经常记录和替换存根,您可能会通过简单地运行记录、生成具有特定时间戳的存根,然后在 IDE 中使用全局查找和替换功能来获得更大的成功。例如,这里是 VSCode 的 Search and Replace 上的文档。

    取决于与您的 IDE 使用什么匹配的正则表达式,但我想它会是这样的

    \"timestamp\": \"(.*)\"
    

    【讨论】:

    • 谢谢,您有更多关于 StubMappingTransformer 的文档或示例吗?我无法关注的当前文档
    • 编写 StubMappingTransformer 将类似于编写其他 WireMock 扩展,除了您将扩展 StubMappingTransformer 而不是这里的示例:wiremock.org/docs/extending-wiremock。您将在全局注册 StubMappingTransformer,与该文档中的扩展相同。您还可以查看 StubMappingTransformer 类以了解需要覆盖哪些方法:github.com/tomakehurst/wiremock/blob/master/src/main/java/com/…
    猜你喜欢
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2016-06-23
    相关资源
    最近更新 更多