WireMock 用作 SOAP 服务的代理

WireMock To Use As Proxy For SOAP Service

这是我正在尝试处理的场景:

我正在使用 Spring 云合同编写合同驱动测试。微服务间互通测试正常

一些微服务正在调用基于 SOAP 的服务。作为集成测试的一部分,我正在尝试使用 WireMock 作为基于 SOAP 的服务的代理。基本上,WireMock 应该拦截调用,然后使用相同的请求调用目标实时环境,return 对测试的响应与存根相同。

遗憾的是,我找不到任何如何继续进行的示例。这些服务使用 HTTP 协议。任何有关如何实现此目标的示例或任何指示都会很棒。谢谢!

首先,您需要将 SOAP 客户端指向 WireMock 基础 URL,例如如果您使用的是 Spring 属性文件,您可能会有这样的内容:

soap.api.host=wiremock-host.internal
soap.api.port=8888

然后您需要使用低优先级、广泛匹配的代理存根配置 WireMock 服务器。这是 JSON 形式的示例:

{
  "priority": 8,
  "response": {
    "proxyBaseUrl" : "http://target.soap.endpoint"
  }
}

最后,您将为要拦截的每个请求创建额外的存根(以默认优先级),例如

{
  "request": {
    "method": "POST",
    "urlPath": "/v1/some/thing",
    "headers": {
      "SOAPAction": {
        "contains": "MyAction"
      }
    }
  },
  "response": {
    "status": 200,
    "body": "<soap:Envelope ..."
  }
}