我正在使用 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"
}
}
你需要编写一个StubMappingTransformer
来处理自动修改你保存的请求。你可以在 WireMock 上的转换生成的存根文档中阅读更多相关信息。
此外,许多现代 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/...