2

我正在使用 WireMock 来模拟 SOA 服务,但是 bodyPattern XML 有问题,我可以在 XML 中使用正则表达式吗?

我的请求标头根据请求时间而变化,我只想匹配标头中的任何内容。

{
  "request" : {
    "url" : "/service/v1/WebService",
    "method" : "POST",
    "bodyPatterns" : [ {
      "equalToXml" :"\\Q<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"><SOAP-ENV:Header>
      <SOAP-ENV:Header>
I want to match whatever inside header.
</SOAP-ENV:Header>

    } ]
  },
4

2 回答 2

2

例如,您的请求如下所示,

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ex="http://example.com">
<soapenv:Header/>
<soapenv:Body>
    <ex:somebody>
        <ex:input>
            <ex:name>John</ex:name>
            <ex:phone>7414444</ex:phone>
            <ex:role>teacher</ex:role>
        </ex:input>
    </ex:somebody>
</soapenv:Body>

那么你的 JSON 文件可能是,

{
"request" : {
    "url" : "/service/v1/WebService",
    "bodyPatterns" : [ {
        "matchesXPath": "//ex:input[ex:name=\"John\" and xw:phone=\"7414444\"]",
        "xPathNamespaces" : {
            "ex" : "http://example.com"
        }
    }]
},
"response" : {
    "status" : 200,
    "headers": {
        "Content-Type": "text/xml;charset=UTF-8"
    },
    "body" : "<Abody>"
}}
于 2018-10-01T01:52:29.630 回答
0

您可以使用 Xpath 获得相同的结果

"bodyPatterns": [
      {
        "matchesXPath": "your xpath"
      }
于 2015-12-23T00:55:06.587 回答