Ruby on rails 5 如何让WebMock使用hash_匹配包含特定XML数据的正文?

Ruby on rails 5 如何让WebMock使用hash_匹配包含特定XML数据的正文?,ruby-on-rails-5,minitest,savon,webmock,Ruby On Rails 5,Minitest,Savon,Webmock,我有一个Ruby(2.6.5)on Rails(5.2.3)应用程序,它已经成功地使用Savon(2.12)通过SOAP/WSDL与FlightAware的API交互。然而,我在尝试为此功能编写小型测试时遇到了一个问题,即使用WebMock(3.7.6)来清除API请求 我的应用程序(通过Savon)发出包含XML正文的请求,如以下示例所示: <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:xsd="http

我有一个Ruby(2.6.5)on Rails(5.2.3)应用程序,它已经成功地使用Savon(2.12)通过SOAP/WSDL与FlightAware的API交互。然而,我在尝试为此功能编写小型测试时遇到了一个问题,即使用WebMock(3.7.6)来清除API请求

我的应用程序(通过Savon)发出包含XML正文的请求,如以下示例所示:

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:FlightXML2="http://flightxml.flightaware.com/soap/FlightXML2" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <FlightXML2:AirportInfoRequest>
      <FlightXML2:airportCode>KDFW</FlightXML2:airportCode>
    </FlightXML2:AirportInfoRequest>
  </env:Body>
</env:Envelope>
如何匹配特定的XML元素而不必将XML标记放在正则表达式中

icao_code = "KDFW"
response_body = "[the response I want]"

WebMock.stub_request(:post, "http://flightxml.flightaware.com/soap/FlightXML2/op").
  with(body: /<FlightXML2:airportCode>#{icao_code}<\/FlightXML2:airportCode>/).
  to_return(status: 200, body: response_body)
with(body: hash_including({airport_code: icao_code})
with(body: hash_including({"airportCode": icao_code})
with(body: hash_including({"FlightXML2:airportCode": icao_code})